SnapPDF + Airtable
Extension that runs ops on PDF attachments in bulk.
The SnapPDF Airtable Extension sits in the Extensions panel of any base. Point it at a field with PDF attachments, pick an op, run. Great for agencies processing client submissions, course platforms bulk-generating certificates, and anyone who lives in Airtable grids. Also has a native Airtable Scripting integration if you prefer code-driven workflows.
What you can build
- Bulk apply an op to every row in a view.
- Scripted access: `fetch()` from Airtable Scripts with a stored SnapPDF key.
- Automation action: "When record matches condition, run SnapPDF op".
- Attach result back to a second attachment field.
- Rate-limited to Airtable's per-base limits — 5 req/s.
Setup
- 01Install the ExtensionIn any base: Extensions panel → Add extension → search "SnapPDF". Install per-base (no global install).
- 02Connect your keyThe extension prompts for an API key on first use. Stored in base-scoped secrets (Airtable Pro+).
- 03Pick fieldsSource: PDF attachment field. Target: another attachment field. Op: your choice with per-op options.
- 04Run against a viewThe extension processes only rows in the selected view. Use views to chunk large bases (e.g. "Unprocessed" view).
- 05Automate with a trigger (optional)Airtable Automations → "When record matches" → Run script → paste our provided script template.
Code example
Airtable Scripting block: OCR a new document attachment and write the extracted text to a text field.
const table = base.getTable('Client Documents');
const record = await input.recordAsync('Pick a record', table);
const attachment = record.getCellValue('Document')[0];
const key = await input.config().snappdfKey;
const response = await fetch('https://api.snappdf.dev/api/v1/ocr', {
method: 'POST',
headers: { Authorization: 'Bearer ' + key, 'Content-Type': 'application/json' },
body: JSON.stringify({ fileUrl: attachment.url, searchablePdf: false, languages: ['eng'] }),
});
const { text } = await response.json();
await table.updateRecordAsync(record, { 'Extracted Text': text });Known limits
- · Airtable 5 req/s soft limit — bulk runs are paced.
- · Attachment URLs expire in 2 hours — re-fetch before processing.
Pricing notes
Beta — available on Starter plan and above.
Available from the Starter plan.
FAQ
Do I need Airtable Pro for the extension?
Yes — base-scoped secrets (where we stash the key) are a Pro+ feature.
Can this process a view with 10,000 rows?
Technically yes, but Airtable will rate-limit around 5 req/s. Budget 30+ minutes for 10k rows. Run overnight or switch to a server-side automation if volume matters.
Where does the result file live?
The extension uploads the processed PDF to Airtable's attachment CDN via their filestack-backed upload endpoint. Costs Airtable attachment storage quota.
Can I preview before committing?
Yes — dry-run mode processes the first record only and displays the result in the extension panel.
What if an attachment has expired?
Airtable attachment URLs expire every 2 hours. The extension always fetches fresh URLs; scripted use must refresh each time.