Datasette
Datasette site metadata as JSON
Datasette publishes SQLite databases as read-only JSON APIs. The project site exposes its own table-of-contents JSON at /content.json — a lightweight health check for the ecosystem.
We probe a documented GET and expect 2xx JSON — full uptime and health score. Open provider docs ↗
On our probe schedule. Uptime charts appear after the first check lands.
GET https://datasette.io/content.json
{
"database": "content",
"private": false,
"path": "/content",
"size": 21413888,
"tables": [
{
"name": "assets",
"columns": [
"url",
"id"
],
"primary_keys": [
"id"
],
"count": 1612,
"hidden": false,
"fts_table": null,
"foreign_keys": {
"incoming": [],
"outgoing": [
{
"other_table": "releases",
"column": "release",
"other_column": "id"
},
{
"other_table": "users",
"column": "uploader",
"other_column": "id"
}
]
},
"private": false
},
{
"name": "blog_posts",
"columns": [
"path",
"year"
],
"primary_keys": [
"path"
],
"count": 6,
"hidden": false,
"fts_table": null,
"foreign_keys": {
"incoming": [],
"outgoing": []
},
"private": false
}
],
"hidden_count": 20,
"views": [
{
"name": "plugins",
"private": false
},
{
"name": "recent_releases",
"private": false
}
],
"queries": [
{
"title": "Datasette News and Blog",
"sql": "with feed_items as (\n select\n 'tag:datasette.io,' || date as atom_id,\n 'Datasette News: ' || date as atom_title,\n date || 'T00:00:00-08:00' as atom_updated,\n 'https://datasette.io/news/' || date as atom_link,\n render_markdown(group_concat(body, char(10) || char(10))) as atom_content_html,\n 'Simon Willison' as atom_author_name,\n 'https://simonwillison.net/' as atom_author_uri,\n date || 'T00:00:00' as sort_datetime\n from\n news\n group by\n date\n union all\n select\n 'tag:datasette.io,' || trim(path, '/') as atom_id,\n title as atom_title,\n replace(datetime_utc, ' ', 'T') || 'Z' as atom_updated,\n 'https://datasette.io' || path as atom_link,\n html as atom_content_html,\n author as atom_author_name,\n author_url as atom_author_uri,\n datetime_utc as sort_datetime\n from\n blog_posts\n)\nselect\n atom_id,\n atom_title,\n atom_updated,\n atom_link,\n atom_content_html,\n atom_author_name,\n atom_author_uri\nfrom\n feed_items\norder by\n sort_datetime desc\nlimit\n 20",
"name": "feed",
"private": false
}
]
}curl "https://datasette.io/content.json"const res = await fetch("https://datasette.io/content.json");
const data = await res.json();
console.log(data);import requests
res = requests.get("https://datasette.io/content.json")
print(res.json())/content.jsonPROBEDDatasette site metadata as JSON
/content.json?limit=5Paginated variant with limit parameter.
/<&Lt — documented GET route.
We probe a documented GET and expect 2xx JSON — full uptime and health score. Export includes every documented route below.
Not tracked yet. Shape-change history starts once this API joins our probe schedule.
Datasette: common questions
Is Datasette free to use?
Yes — Datasette is a free open data API. Free tier: Free — limits not published. Whether the free tier allows commercial use is unclear — check the provider docs.
Does Datasette need an API key?
No — Datasette needs no API key or signup. You can call it straight away; rate limits still apply (Unpublished).
Can I call Datasette from the browser?
Yes — Datasette returns CORS headers over HTTPS, so front-end code can fetch it directly with no backend proxy. Use the fetch snippet on this page, or hit "Run live" to try it now.
Is Datasette up right now?
Datasette is catalogued but not yet on our probe schedule, so we don't publish a live status for it. Check the provider's own status page or docs for its current state.