Airtable
Read bases, tables, and records directly via api.airtable.com.
Setup (one-time)
- Go to https://airtable.com/create/tokens
- Click + Create new token, give it a name
- Add scopes:
data.records:readschema.bases:read
- Under Access, select which bases to grant access to (or all)
- Copy the token — it starts with
pat - Set the environment variable:
AIRTABLE_PAT=pat_your_token_here
Commands
List all accessible bases
python3 /mnt/skills/user/airtable/scripts/airtable.py list-bases
List tables in a base
python3 /mnt/skills/user/airtable/scripts/airtable.py list-tables <base_id>
List records in a table
python3 /mnt/skills/user/airtable/scripts/airtable.py list-records <base_id> "Table Name"
python3 /mnt/skills/user/airtable/scripts/airtable.py list-records <base_id> "Table Name" --limit 50
Filter records with a formula
python3 /mnt/skills/user/airtable/scripts/airtable.py list-records <base_id> "Tasks" --filter "{Status}='Done'"
python3 /mnt/skills/user/airtable/scripts/airtable.py list-records <base_id> "Contacts" --filter "NOT({Email}='')"
Filter to specific fields only
python3 /mnt/skills/user/airtable/scripts/airtable.py list-records <base_id> "People" --fields "Name,Email,Company"
Use a specific view
python3 /mnt/skills/user/airtable/scripts/airtable.py list-records <base_id> "Tasks" --view "Active Tasks"
Get a specific record
python3 /mnt/skills/user/airtable/scripts/airtable.py get-record <base_id> "Table Name" <record_id>
Search records
python3 /mnt/skills/user/airtable/scripts/airtable.py search-records <base_id> "Contacts" "Smith"
python3 /mnt/skills/user/airtable/scripts/airtable.py search-records <base_id> "Contacts" "smith@acme.com" --field "Email"
Notes
- Free plan: unlimited bases, 1,000 records per base. API reads work on free.
- Base IDs start with
app, record IDs start withrec. - Table names are case-sensitive and must match exactly. Use quotes if the name has spaces.
- Airtable deprecated old API keys in Feb 2024. Only Personal Access Tokens (PAT) work now.