Skip to main content
Version: Next

Airtable

Airtable source connector

Description

Used to read data from Airtable.

Key features

Options

nametyperequireddefault value
tokenStringYes-
base_idStringYes-
tableStringYes-
api_base_urlStringNohttps://api.airtable.com
viewStringNo-
fieldsListNo-
filter_by_formulaStringNo-
max_recordsintNo-
page_sizeintNo-
sortStringNo-
cell_formatStringNo-
return_fields_by_field_idbooleanNo-
record_metadataListNo-
time_zoneStringNo-
user_localeStringNo-
offsetStringNo-
headersMapNo-
bodyStringNo-
pageingConfigNo-
request_interval_msintNo220
rate_limit_backoff_msintNo30000
rate_limit_max_retriesintNo3
schemaConfigNo-
schema.fieldsConfigNo-
formatStringNotext
content_fieldStringNo-
json_fieldConfigNo-
json_filed_missed_return_nullbooleanNofalse
common-optionsconfigNo-

token [String]

Airtable personal access token. You can create one at https://airtable.com/create/tokens.

base_id [String]

The ID of the Airtable base (starts with app).

table [String]

The table name or table ID to read from.

api_base_url [String]

Airtable API base URL. Default is https://api.airtable.com.

view [String]

The name or ID of a view in the table. Only records visible in this view will be returned.

fields [List]

A list of field names to include in the response.

filter_by_formula [String]

An Airtable formula to filter records. See Airtable formula reference.

max_records [int]

Maximum total number of records to return.

page_size [int]

Number of records per page (1-100).

sort [String]

Sort definition as a JSON array, e.g. [{"field":"Name","direction":"asc"}].

cell_format [String]

The format for cell values, either json or string.

return_fields_by_field_id [boolean]

If true, field keys in the response will be field IDs instead of field names.

record_metadata [List]

Additional record metadata to return, e.g. ["commentCount"].

time_zone [String]

The time zone for formatting date/time values.

user_locale [String]

The user locale for formatting values.

offset [String]

Pagination offset returned by Airtable. Usually you do not need to set this manually because the connector follows Airtable pagination automatically.

headers [Map]

Extra HTTP headers. The connector automatically adds Airtable authorization and JSON content type headers.

body [String]

Advanced request body. Do not use it together with dedicated Airtable request options such as fields, filter_by_formula, page_size, or sort for the same Airtable API key.

pageing [Config]

HTTP pagination configuration inherited from the HTTP connector. For normal Airtable list-records reads, prefer Airtable's own pagination handled by the connector.

request_interval_ms [int]

Minimum interval in milliseconds between API requests. Default 220ms (to stay within Airtable's 5 requests/second limit).

rate_limit_backoff_ms [int]

Base backoff time in milliseconds when receiving a 429 (rate limit) response. Default 30000ms.

rate_limit_max_retries [int]

Maximum number of retries after receiving a 429 response. Default 3.

schema [Config]

fields [Config]

The schema fields of upstream data. For more details, please refer to Schema Feature.

format [String]

The format of upstream data, supports json and text, default text.

content_field [String]

JsonPath expression to extract data from the response. For Airtable, you typically use $.records[*].fields to extract the fields from each record.

json_field [Config]

This parameter helps you configure the schema and must be used with schema.

json_filed_missed_return_null [boolean]

When true, missing JSON fields return null; otherwise a missing field causes an error.

common options

Source plugin common parameters, please refer to Source Common Options for details.

Example

Read from an Airtable table and output raw text:

source {
Airtable {
token = "patXXXXXXXX.XXXXXXXX"
base_id = "appXXXXXXXX"
table = "Shipments"
format = "text"
max_records = 10
}
}

Read with schema and extract record fields:

source {
Airtable {
token = "patXXXXXXXX.XXXXXXXX"
base_id = "appXXXXXXXX"
table = "Shipments"
content_field = "$.records[*].fields"
filter_by_formula = "{Status} = 'Shipped'"
schema = {
fields {
Name = string
Status = string
Weight = float
}
}
}
}

Read a small page from Airtable:

source {
Airtable {
token = "patXXXXXXXX.XXXXXXXX"
base_id = "appXXXXXXXX"
table = "Shipments"
format = "json"
content_field = "$.records[*].fields"
page_size = 2
request_interval_ms = 220
schema = {
fields {
Name = string
Age = int
Status = string
}
}
}
}

Changelog

Change Log
ChangeCommitVersion