How to export your data from Airtable

Airtable exports CSV per table and view, not whole bases, and its attachment links expire. This guide maps every documented export path, its limits and the steps for a verified complete extract.

On this page

What you can export from Airtable today

If a renewal, a price change or a residency requirement is pushing you out of Airtable, start by inventorying what you can take out. Airtable does not export a full base as a single file. Each table is downloaded as its own CSV from a view, so a base with twelve tables means twelve separate exports. Check the view you pick for each table, because the file reflects that view's contents. Ask your Airtable administrator which tables, views and attachment fields your team depends on, and record that list before you count the export as complete. The Airtable views guide explains how views are set up.

The CSV covers record values but not everything around them. Attachment links expire after a few hours, so a file URL saved from last week's export will likely fail when you try to download it. Pull attachments in the same session as the table export, or fetch them through the API. Comments and field descriptions are not included in the export either, so the context your team wrote into fields and discussions has to be copied by hand or kept in a separate document. Test one table end to end, including its attachments, before you commit the whole migration plan to CSV downloads.

For a complete extract, the Web API is the route, and it carries its own limits. Airtable's plans overview caps API calls per workspace per month at 1,000 on Free and 100,000 on Team, so confirm your plan's quota before you script a full pull. Requests against a single base are also rate limited, which means a large extract should run as a long job that pauses and resumes after throttling. Confirm with Airtable where your workspace's data is held, because data residency in Europe or Australia is available only on Enterprise Scale and base metadata stays in US data centers.

Which data types leave Airtable, by export method

This table compares each kind of Airtable data with the export route that carries it, the format it arrives in, and the limits that apply. Read it before planning a download, because the CSV route works table by table and the API route is throttled. The main takeaway is that a complete extract usually combines CSV for records, separate attachment downloads and API calls for anything the CSV omits.

Data typeExport methodFormat and limitsWhat to check
Records and fieldsCSV download from a viewOne CSV per table or view, with no whole-base file. Records per base are capped at 1,000 on Free, 50,000 on Team and 125,000 on self-serve Business.Confirm the view shows every record and field before downloading.
AttachmentsAttachment links in CSV cellsLinks expire after a few hours, so files must be fetched promptly.Download files in one pass and match them to records by name or ID.
Field types and computed fieldsValues in CSV or API responsesFormula, lookup and rollup results arrive as values, and some field types may flatten.Compare each field type in the file against the Airtable field settings.
Comments, descriptions and historyNot included in CSVField descriptions and comments do not appear in the export.Record them separately, for example from screenshots or a manual log.
Full programmatic extractAirtable Web APIA per-base rate limit applies. API calls are capped per workspace per month at 1,000 on Free and 100,000 on Team.Confirm the current rate limit with Airtable and plan pagination and request budgets before a large run.

What does not export and how to work around each gap

Airtable's export tools move table data and attachments, but several things stay behind: whole-base files, durable attachment links, comments, field descriptions and the logic built around the data. Each gap below needs a planned workaround before cutover, and the cards are ordered from the most structural to the easiest to recreate by hand.

No whole-base single-file export

Airtable does not export a full base as one file. Each table is downloaded as its own CSV from a view, so the extract is only as complete as the views you export. Before you start, list every table and confirm that each has a view with no hidden fields or filters. Then export each table from that view and keep a manifest that records table name, view name, row count and export date. Reconcile row counts against Airtable after each download. Importers such as Baserow's and Grist's can read a base directly, so check whether a direct import is a better path than CSV files.

Attachment links that expire

Attachment URLs in an Airtable CSV are temporary and stop working after a few hours. A CSV holding dead links preserves the filename and the record but not the file itself. Download attachments in the same session as the export, or pull them through the Web API while the links are still valid. Store each file under a stable path that includes the record ID and field name, and record the mapping in your manifest so the files can be re-linked after import. Verify a sample of files by checksum before you decommission the base.

Comments and revision history

Record comments and their authors are not in CSV or API field exports in a form that imports cleanly, and revision history is not carried over either. If comments hold decisions or approvals, you need a written record. Use the Web API or your own review of each record to copy comments into a notes field, a separate table or an exported document, with the author and date. Confirm which comment data your plan and API access expose before you rely on it, since availability can vary by plan.

Field descriptions and field metadata

Field descriptions, which explain what each column means and which values are allowed, are not part of the CSV. Without them, a new schema can lose the business meaning behind names like status codes or cost centers. Copy every field description into a data dictionary before you export, with the field type, options and whether the field is a link or a formula. This dictionary also becomes the checklist you use to rebuild the schema in the target tool and to test that each field type converted correctly.

Interfaces, automations and formulas

A CSV carries values, not logic. Interfaces, automations, and the formula, lookup and rollup definitions that produce those values do not travel in a data export. Baserow's Airtable importer excludes formula, lookup, rollup and collaborator fields, automations, interfaces, comments and revision history. Document each automation trigger and action, each formula expression and each interface page as a specification. Rebuild these in the target platform and run old and new outputs side by side before cutover.

Full extracts through the Web API

For a complete extract, the Web API is the documented path, but it is throttled per base and per workspace. Plan requests against the limits in your plan and confirm the current rate limit in Airtable's API documentation before you schedule a run. Pull records, attachments and metadata in batches, save raw responses, and resume from the last saved page after an interruption. Keep the API key or token out of scripts that others can read, and revoke it once cutover is complete.

Sequence for a complete, verified export

This sequence turns a live Airtable workspace into a set of copies you control, with a written record that each table, row, field and attachment was counted and checked against the source before you rely on the copies or start a migration. Because Airtable has no whole-base export, the work is assembled from per-table CSVs, the Web API and attachment downloads, and each step closes with evidence you can keep.

  1. Inventory tables, views and attachments

    Before exporting anything, the base owner lists every base in scope, every table in each base, the views each table uses, and the attachment fields that hold files. Record the base ID, table name, view name, record count shown in the interface, field count and the number of attachments per attachment field. Export this inventory as a dated file and store it with the export. The step is done when every table in scope has a row in the inventory and the counts are noted, so later checks have a baseline to compare against.

  2. Freeze the schema and record changes

    Ask base editors to stop changing field names, field types, formulas and table structure for the duration of the export, and note who approved the freeze. Take a screenshot or a field-by-field list of each table's fields, types and any formula text, since Airtable's CSV download carries values but not the field configuration. Record the time the freeze started and ended. The step is done when the schema list is saved alongside the inventory and the freeze owner has confirmed in writing that no structural edits were made.

  3. Export each table as CSV from a complete view

    For each table, create or select a view that shows all rows and all fields, with no filters, hidden fields or grouping that would drop data. Download the CSV from that view, since Airtable does not export a full base as one file. Name each file with the base and table, and keep the view name in the inventory. Check that the downloaded file's row count matches the record count in the inventory and that the column headers match the field list. The step is done when every table has a CSV and its row and column counts match the inventory.

  4. Pull records and attachments through the Web API

    Use the Airtable Web API with a token that has read access to the base to extract records, including fields that the CSV does not represent cleanly, such as linked record IDs and attachment metadata. Pace the requests within the per-base rate limit, and log every page returned, the HTTP status and any retries. Download each attachment file promptly, because attachment links in Airtable expire after a few hours, and save each file under a stable name tied to its record ID and field. The step is done when the API extract's record count matches the inventory and each attachment has a saved file.

  5. Store the copies under your own control

    Move the CSVs, API extracts, attachment files, schema list and inventory into storage that your organization controls, such as an encrypted volume on your own servers or a bucket in your own cloud account. Restrict access to the people who need it, and record where each copy lives and who holds access. Compute a checksum for each file and store the checksum list with the export. The step is done when every artifact is in the controlled location, the checksum list exists, and access has been limited and documented.

  6. Verify row counts and field values

    Compare each table's CSV row count and the API record count with the inventory. Then sample records from each table and compare field values with the live base, paying attention to dates, numbers, multi-select fields, linked records and long text, where formatting is most often lost. Note any mismatch, its cause and the fix. The step is done when counts match for every table and the sampled records match, or each difference is explained in the verification log.

  7. Verify attachment file counts and sign off

    Count the attachment files saved for each attachment field and compare them with the counts in the inventory and in the API extract. Confirm that each file opens and that its checksum matches the stored list. Record any attachment that failed to download, with its record ID, so it can be retried before links expire. Once the checks pass, the export owner signs a single record that lists the inventory, schema list, verification log and checksum list. The step is done when the attachment counts match, the files open, and the signed record is stored with the export.

How the API route differs from CSV downloads

Use the Web API when you need a complete extract that a CSV download cannot give you. Airtable exports one table at a time from a view, so hidden fields, filtered-out rows and linked records outside that view can be missed. A script that reads each table through the API can capture every record, record identifier and linked-record reference in a structured form. Before you write it, confirm the endpoints and field coverage in Airtable's developer documentation, and check the monthly API call allowance for your plan in the Airtable plans overview. The per-base rate limit is the constraint that shapes the job: plan the run as a queue of tables, pace requests below the limit, back off when the API signals throttling, and log each completed table so a failed run can resume without starting over.

Attachments need their own handling in the API route. The attachment URLs returned with records are temporary, and so are the links in a CSV, so storing only the URL leaves you with broken references later. Download each file in the same run that reads its record, save it under a stable name built from the record ID and field name, and check the stored size against the size Airtable reports. Run a test on a small base first to see how long a link remains valid in your workspace. A common decision point is whether attachments download before or after the metadata is written. Downloading first, with a retry for each file, avoids most losses.

The trade-off comes down to effort against completeness. A CSV download needs no code, suits a small base moved once, and lets a non-engineer check the result by eye, but it leaves gaps and depends on manual steps for every table. A scripted extract is repeatable and complete, and it can be rerun before cutover to catch changes, but someone must own the script, handle pagination and errors, and protect the access token. Whichever route you take, compare record counts per table against Airtable's own counts before you retire the source base. Keep the export logs and checksums with the migration record so the copy can be verified later.

Export paths for small bases and large bases

A small base with a few tables, modest attachment counts and no heavy dependencies can usually be exported with Airtable's own tools. Airtable does not export a full base as a single file, so each table is downloaded as its own CSV from a view. Because a CSV reflects what the view shows, the view must include every field and record you need before you download it.

  • One CSV per table: Create or select a view for each table that shows all fields and has no filters, then download it.
  • Computed fields: Record which fields are formulas, lookups or rollups in your inventory, because the CSV holds their displayed values and not the logic behind them.
  • Linked records: Check how linked records appear in the file, and keep a separate map of relationships if you need to re-link them later.
  • Team effort: One administrator with edit access to the base can complete the export in one session, with a second person comparing row counts.

Before you treat the export as complete, confirm that each CSV's row count matches the record count Airtable shows for that view.

What to plan before the Airtable contract ends

An Airtable export is only as complete as the views and tokens you prepare for it, and it is easier to test well before a renewal date. The cards below cover the decisions and checks that connect a trial extract, your plan limits, the target platform, audit needs and where the archive lives.

Run a full test extract early

Airtable has no whole-base export, so each table must be downloaded as its own CSV from a view, and attachment links expire after a few hours. Run a complete extract well before the renewal date, not on the last day. Count records and attachments per table, compare them with the source, and note which tables needed manual steps. Any gaps found in a trial still leave time to fix the process. Confirm with Airtable, in writing, what your current contract allows regarding access and data return before you rely on any timing.

Record your plan and seat counts

Write down your current plan, the number of paid seats, and how many records and API calls each base and workspace uses against the plan caps. Pricing and caps change, so take the figures from your own invoice and the current plans page rather than from memory. Seat counts also tell you which target licenses you need, since a self-hosted platform may charge by seat, by instance or not at all. Ask your account team which renewal, notice and data retention terms apply to your agreement.

Decide the target platform

Choose the target before the export, because the platform decides which data survives the move. Baserow's importer copies tables, records, attachments, field types, relationships and grid views from a public share link, but not formula, lookup, rollup or collaborator fields, automations, interfaces or comments. Grist's Airtable import works with personal access tokens. Map every formula, automation and interface you depend on against the target so the gaps are known before cutover.

Confirm regulatory and audit data needs

Before deleting anything in Airtable, decide what records, change history and access evidence your regulators, auditors or internal policies require you to keep. Airtable's exports do not include comments or revision history, so those need a separate retention decision. Ask your compliance lead and external auditor which data sets must be preserved, in what format and for how long. DeployOpen can help prepare the evidence, but auditors and certification bodies decide what is sufficient.

Keep the archive under your control

Store the final export on storage you own, with checksums, a documented file inventory and restricted access. Attachments need their own copy because their links expire. Include the base structure, view definitions and field descriptions you captured by hand, since CSV files do not carry them. Test that the archive can be opened and read by someone who is not the original author, and record who holds the encryption keys and where backups are kept.

Questions buyers ask before exporting Airtable data

How long does a complete Airtable export take?

The duration depends mainly on how many tables the base holds, how many records and attachments each table contains, and whether you script the extract through the Web API. Airtable has no whole-base export, so each table is downloaded as its own CSV from a view, and attachment links expire after a few hours, which means large attachment sets have to be fetched in a single pass. No fixed duration applies to every base, so ask DeployOpen for a written estimate based on an inventory of your tables, views and attachment volume. Use the Airtable views guide to confirm how each table's export works in your plan.

Can our team export the data without outside help?

Yes, for a small base with a handful of tables and few attachments, an administrator can download the CSVs from each view and save the attachments by hand. The effort grows quickly beyond that: each view must be checked for filters that hide rows, linked records lose their meaning in flat files, and attachments must be downloaded before their links expire. Teams with many tables or a Web API extract usually find the verification work is the larger share. Assess your base against those factors before deciding.

What does the export need from admins and developers?

Admins need edit or owner access to every base in scope, plus the ability to create personal access tokens if the extract uses the Web API. Developers need to write a script that respects Airtable's per-base rate limit, pages through records, retries failed attachment downloads and stores the files with stable names. Document the field types and link fields as well, because CSV output does not preserve relationships, comments or field descriptions, so those need a separate record. Confirm current token scopes and limits in your own Airtable plan.

What does a DeployOpen export engagement cover?

DeployOpen works under a written, fixed scope that names the bases, tables, attachments and target platform, and the deliverables and timeline are agreed before work starts. In general terms, the work can include an inventory of bases and fields, scripted extraction, attachment capture, mapping of linked records and a verification report comparing the copy with the source. Ask for the exact list of deliverables in the written scope. DeployOpen does not issue audit reports or certifications for the export.

How do we verify that an Airtable copy is complete?

Compare record counts per table with the counts shown in Airtable, check that every attachment file exists and matches its expected size, and sample records across each table to confirm values, dates and select options survived. Check linked-record relationships by counting references on both sides. Keep a checksum list for attachments and retain the export log so an independent reviewer can repeat the comparison. Agree on the acceptance checks with your data owners before the extract starts.

What drives the cost of an export, and what should we ask for in a quote?

Cost is driven by the number of tables and bases, attachment volume, how many relationships and formula fields must be documented, the amount of scripting, and the verification effort. One-time work covers inventory, extraction and verification. Recurring costs appear only if you need repeated syncs or ongoing support, which are offered as separate retainers. Request a written quote that itemizes each base, the extraction method, attachment handling, verification steps and any retained support. No price is published here.

Does an export preserve comments, automations and interfaces?

No. Airtable's CSV downloads carry field values only, so comments, field descriptions, automations, interfaces and revision history need to be recorded separately from the Web API or by manual documentation. Plan to keep a written inventory of these items so they can be rebuilt on the target platform. Confirm with Airtable which metadata your plan exposes through its API before you assume any of it can be extracted.

How DeployOpen works on this

DeployOpen plans and implements self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For an Airtable exit, we scope the export path for each base, build the extract and import pipeline on infrastructure you control, and document the result so your team can run it after handover.

How we scope

  • Inventory every base, table, view, attachment field and linked record that must leave Airtable
  • Record which Airtable features, such as formulas, automations, interfaces and comments, need rebuilding rather than copying
  • Agree the target platform, hosting location and access model in a written, fixed-scope document before work starts

How we build

  • Run the Airtable extract through the Web API or per-view CSV downloads, sized against the per-base rate limit
  • Stand up Baserow or Grist in your environment, with external PostgreSQL where the chosen platform recommends it
  • Import tables, attachments and relationships, then check row counts, field types and attachment integrity against the source

How we hand over

  • Deliver a runbook covering the export scripts, import steps, configuration files and rollback procedure
  • Document the field mapping and every rebuilt formula, view or automation so reviewers can trace each one
  • Walk your administrators through the running instance and record the acceptance tests that were passed

How we support

  • Offer ongoing support, upgrades and continuous testing as a retainer after the exit is complete
  • Plan platform version upgrades and backups for the self-hosted instance under the agreed scope
  • Ask any provider for the written scope, deliverables and timeline before accepting a quote for your exit

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.