Datasette JSON Extractor avatar

Datasette JSON Extractor

Pricing

from $0.35 / 1,000 record extracteds

Go to Apify Store
Datasette JSON Extractor

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

Datamule

Maintained by Community

Actor 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

FieldDescription
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.
databaseThe 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.
tableThe table (or view) to page. Setting this switches to rows mode.
sqlAn optional read-only SQL query. Takes precedence over table.
listDatabasesOnlyDiscovery-only switch — map databases + tables without reading rows.
maxRecordsMax total records to emit (default 1000). Each record is one billable event.
pageSizeRows requested per page in rows mode (default 1000, server-capped).
bearerTokenOptional bearer token for a private/gated instance. Never logged.
extraHeadersOptional 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 raw object 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 / extraHeaders inputs cover gated deployments and are never logged.