Search Records

airtable.search_records
ActionFiles & storageconnection required

Calls the Airtable API with the connection's credentials.

Search a table with a filterByFormula, a view, a sort order and Airtable's offset pagination, returning one page and the token for the next.

Connection

Required
Yes — the node will not save without one
Auth type
Bearer token
Providers
Airtable
Secret shape
the Airtable access token
Resolved by
config.connection_id, else node.connection_id

Configuration

13 fields, 2 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.

FieldTypeRequiredDefaultConstraintsExample
base_id
Airtable base id (app…), from the base's API docs URL or airtable.list_bases.
stringYes——appAbCdEfGhIjKlMn
table
Table id (tbl…) or table name. An id survives a rename; a name does not.
stringYes——Tasks
filter_formula
An Airtable formula that must be truthy for a record to be returned, e.g. AND({Status}='Open', {Owner}='Ada').
stringNo——{Status}='Open'
view
Restrict to a view's records and order: only rows visible in that view come back, in the view's own order.
stringNo———
sort
Sort order, as a JSON array of {"field": name, "direction": "asc"|"desc"} objects applied in order.
arrayNo—array of object—
return_fields
Only return these columns, as a JSON array of field names or ids. Leave empty for every field.
arrayNo—array of string—
page_size
Records per request; Airtable's maximum and default is 100.
numberNo—1–100—
max_records
Stop after this many records in total, across pages.
numberNo—≥ 1—
offset
Airtable's continuation token from a previous call's 'offset'. Leave empty for the first page.
stringNo———
cell_format
How cell values come back: 'json' (native types) or 'string' (formatted the way the Airtable UI shows them).
stringNo—one of "json", "string"—
time_zone
IANA time zone used to format dates; required when cell_format is 'string'.
stringConditional—only with cell_formatAsia/Kolkata
user_locale
Airtable user locale used to format numbers and dates; required when cell_format is 'string'.
stringConditional—only with cell_formaten-gb
return_fields_by_field_id
Key the returned 'fields' object by field id (fld…) instead of field name.
booleanNofalse——

Example configuration

Every value below is the contract’s own example or default — nothing invented.

{
  "base_id": "appAbCdEfGhIjKlMn",
  "filter_formula": "{Status}='Open'",
  "return_fields_by_field_id": false,
  "table": "Tasks",
  "time_zone": "Asia/Kolkata",
  "user_locale": "en-gb"
}

Output

One shape.

result

FieldTypeExample
records[].id
The Airtable record id (rec…).
string—
records[].fields
The record's cell values, keyed by field name.
object—
records[].createdTime
When the record was created (ISO 8601).
string—
count
How many records this call returned.
number—
offset
The token for the next page; empty on the last page.
string—
has_more
True while another page is waiting behind 'offset'.
boolean—
{
  "count": 0,
  "has_more": false,
  "offset": "",
  "records": [
    {
      "createdTime": "",
      "fields": {},
      "id": ""
    }
  ]
}

Notes

  • This is one page, not the whole table. Loop with control.while on 'has_more', feeding 'offset' back in, to walk everything.
  • filterByFormula runs on Airtable's side over every record in the table, so an unindexed formula over a large table is slow — a view is usually faster.
  • Airtable caps every batch write at 10 records per request. The batch nodes chunk for you and report how many calls they made in 'batches'; the calls are sequential and not a transaction, so a failure part-way leaves the earlier chunks committed and says how many got through.
  • typecast is what lets a plain string be written into a single-select, date or number column. It is on by default, matching airtable.create_record.
  • Reads page on an opaque 'offset' token, not a page number: feed the offset a call returns back into the next call while 'has_more' is true.
  • The base/table/field nodes use Airtable's metadata API, which needs the 'schema.bases:read' (or ':write') scope on the personal access token. A token minted only for 'data.records:*' gets a 403 from them.

See Search Records run in a workflow.

In a technical demo we add the Airtable connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.