Datasette JSON Extractor
Pricing
from $0.35 / 1,000 record extracteds
Datasette JSON Extractor
Point at ANY Datasette instance and pull structured data via its uniform JSON API. Discover every database + table, page a table's rows into a clean dataset, or run a read-only SQL query. Works on any datasette publish site with no per-site scraper. Pay per record.
Pricing
from $0.35 / 1,000 record extracteds
Rating
0.0
(0)
Developer
Datamule
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Point this Actor at any Datasette instance and pull its data out through Datasette's uniform JSON API — no per-site scraper, no HTML parsing. Datasette publishes SQLite databases as browsable, queryable websites, and every instance exposes the same JSON endpoints, so one Actor works across all of them: the project's own datasette.io, covid-19.datasettes.com, the UK Register of Members' Interests, timezones.datasette.io, and the thousands of sites published with datasette publish.
Three modes, chosen automatically from your input
1. Discovery — map an instance
Give it just a base URL (and optionally turn on List databases & tables only) and it returns one row per (database, table) with the column list, primary keys, row count, and the direct table/database URLs — a cheap map of everything the instance serves.
{ "baseUrl": "https://latest.datasette.io", "listDatabasesOnly": true }
2. Rows — page a whole table
Add a database and table and it pages that table into a clean dataset, following Datasette's cursor until the table is exhausted or Max records is hit. Each row's own columns are spread to top-level fields (so the dataset mirrors the source table) plus a lossless raw object.
{ "baseUrl": "https://latest.datasette.io", "database": "fixtures", "table": "facetable", "maxRecords": 5000 }
3. SQL — run a read-only query
Provide a SQL string and it runs it against Datasette's read-only SQL API and returns one record per result row. Datasette blocks writes by default; this Actor never attempts them.
{"baseUrl": "https://latest.datasette.io","database": "fixtures","sql": "select state, count(*) as n from facetable group by state order by n desc"}
Input
| Field | Description |
|---|---|
baseUrl (required) | The Datasette instance root, e.g. https://latest.datasette.io. Don't include /-/databases.json — just the root. A path-mounted instance (https://host/data) works too, and if you paste a database or table URL the Actor recovers the root automatically. |
database | The database to read. Leave empty in discovery mode to list all; in rows/SQL mode the Actor defaults to the sole database when an instance has just one. |
table | The table (or view) to page. Setting this switches to rows mode. |
sql | An optional read-only SQL query. Takes precedence over table. |
listDatabasesOnly | Discovery-only switch — map databases + tables without reading rows. |
maxRecords | Max total records to emit (default 1000). Each record is one billable event. |
pageSize | Rows requested per page in rows mode (default 1000, server-capped). |
bearerToken | Optional bearer token for a private/gated instance. Never logged. |
extraHeaders | Optional extra request headers (e.g. an API-gateway key). |
Output
Every record shares a stable set of normalized fields — _source, _database, _table, _mode, _rowIndex, primaryKey — plus mode-specific data:
- Discovery rows carry
tableName,rowCount,columns,primaryKeys,isView,tableUrl,databaseUrl. - Rows / SQL records spread the source columns to top-level fields, plus a lossless
rawobject of the original row.
Pricing
Pay-per-event: one record charge per emitted row (a table in discovery mode, a row in rows/SQL mode). You pay only for what you extract.
Notes
- A table with 0 rows returns 0 records and exits cleanly.
- A non-Datasette host fails fast with a clear message.
- Public instances need no credentials. The
bearerToken/extraHeadersinputs cover gated deployments and are never logged.