Fetch Hierarchical Data Records from Airtable with Multi-level Relationships
Go to WorkflowDescription
Airtable Hierarchical Record Fetcher
Description
This n8n workflow retrieves an Airtable record along with its related child records in a hierarchical structure. It can fetch up to 3 levels of linked records and assembles them into a comprehensive JSON object, making it ideal for complex data relationships and nested record structures.
Features
Multi-level Record Fetching**: Retrieves parent record, linked child records (level 2), and optionally grandchild records (level 3)
API Call Optimization**: Uses Airtable's filterByFormula to minimize API calls by fetching multiple related records in single requests
Selective Level 3 Fetching**: Only fetches level 3 records for specified linked fields to optimize performance
Rich Text Processing**: Converts Airtable's pseudo-markdown rich text fields to HTML format
Hierarchical JSON Output**: Organizes all data in a structured, nested JSON format
Flexible Configuration**: Customizable depth and field selection per execution
Input Parameters
The workflow accepts a JSON array with the following structure:
[
{
"base_id": "appN8nPMGoLNuzUbY",
"table_id": "tblLVOwpYIe0fGQ52",
"record_id": "reczMh1Pp5l94HdYf",
"level_3": [
"fldRaFra1rLta66cD",
"fld3FxCaYk8AVaEHt"
],
"to_html": true
}
]
Parameter Details
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| base_id | string | Yes | Airtable base identifier |
| table_id | string | Yes | Airtable table identifier for the main record |
| record_id | string | Yes | Airtable record identifier to fetch |
| level_3 | array | No | Array of field IDs from level 2 records for which to fetch level 3 children |
| to_html | boolean | No | Convert rich text fields from pseudo-markdown to HTML (default: false). This requires marked npm package. |
Output Structure
The workflow returns a hierarchical JSON object with the following structure:
{
"id": "recXXXXXXX",
"field_1": ...,
"field_2": ...,
"level2_child": [
{
"id": "recXXXXXXX",
"field_a": ...,
"field_b": ...,
"level3_child": [
{
"id": "recXXXXXXX",
"field_y": ...,
"field_z": ...,
},
...
]
},
...
]
}
`