Record Atlas
26 public files · no key, no rate limit, no account

Use the data

Everything this map draws is a plain JSON file on a public URL, and the map is only the first client. Take any of it, for anything, without asking.

The licences — there is more than one, and the difference matters

Read the licence field of the file you are taking. Every file derived from somebody else's work declares whose and on what terms, and the table below prints what each one actually says rather than one blanket claim over all of them.

  • ODbL 1.0, © OpenStreetMap contributors — the archives and the cemeteries harvested from OSM, and the 60,883 Irish townlands, which come from Townlands.ie. Attribution required, and share-alike: a derived database has to be published under ODbL too.
  • CC0 1.0 — the sets harvested from Wikidata, because Wikidata is CC0, and the surname corpus, which declares it.
  • No licence stated — the holdings list of HR-HDA-883, the register collection of the Croatian State Archives, taken from the published inventory in Angelika Milić, «Zbirka matičnih knjiga u Hrvatskom državnom arhivu», Arhivski vjesnik 60 (2017), 251–311, hrcak.srce.hr/194831. The article is openly readable on HRČAK and grants no licence — not CC, not public domain, nothing. Openly readable is not openly licensed, so none is asserted here and none should be inferred. What is carried is the factual content of an inventory of a state holding — parish, confession, register type, years — and not the author's text, arrangement or commentary. If you reuse it, cite Milić 2017 and satisfy yourself independently; do not rely on us having cleared it, because we have not.
  • CC BY-SA 4.0, attribution AND share-alike — the English Wiktionary, for what a surname is said to be. Three things are taken and no prose: the language sections a name is tagged a surname under, the from= of Wiktionary's own surname template, and the word a name derives from where the template names one. The Etymology and Statistics sections are somebody's writing and are left alone — a template parameter is a fact in a field, and that is the line. Every row carries the page and the revision it was read at, because Wiktionary changes under you. Share-alike: a database derived from this part has to carry the same licence.
  • CC BY 4.0, attribution required — GeoNames, which is the gazetteer and therefore the reason any old place name resolves at all; and Statbel, for the Belgian surnames at commune grain.
  • CC BY 3.0 IT — Istat, for the Italian comuni.
  • Open Government Licence v3.0 — the National Records of Scotland, for the civil parishes.
  • Trove API Terms of Use — the 2,014 Australian newspaper titles, from the National Library of Australia. Two conditions, and the second is unusual. Attribution must name the contributing source AND Trove, with a link back, which is why every newspaper row carries the National Library as its holder and links to its own Trove page. And the metadata may only be CACHED FOR THIRTY DAYS — so this atlas re-harvests fortnightly and scripts/build.py fails the build once the file is older than thirty days. A static site that bakes its data in would otherwise drift out of the terms in silence.
  • Public domain — Natural Earth, for the country outlines.
  • Terms not declared — the Estonian parish and county vocabularies from the Rahvusarhiiv. Said plainly rather than assumed either way.
  • FamilySearch catalogue metadata — not an open licence. This one matters most and this page had it wrong. Every volume title and waypoint id in a place file comes from FamilySearch's catalogue: «Defunciones 1980-1989» is their cataloguing, not our writing. The fact that a collection covers a place is not theirs to own and is what this atlas is for; the titles are theirs. Take the shape and the coverage freely, and do not treat the strings as relicensable.
  • This atlas's own compilation — the index, the place files, the record regions, the provider spine, the flag timelines and the 1,454 hand-drawn flags that go with them. That is our research and it carries no licence file yet, because the repository has none to point at. Declaring one is the owner's to do and not a build script's; until it is done, take it and cite it.

What no licence here covers: the records themselves. This atlas publishes pointers — that a collection exists, what it covers, where to look. Each provider sets its own terms for the images and indexes at the other end of those links, and those terms are theirs.

How to fetch it
# every place the map can draw
curl -s https://recordatlas.org/index.json | jq '.places | length'

# one place, in full
curl -s https://recordatlas.org/p/gracisce.json

# which archive held this ground, and when
curl -s https://recordatlas.org/regions.json | jq '.regions[0]'

No key, no rate limit, no account, readable from any origin — these are static files on GitHub Pages, which is also why there is no query endpoint. Fetch the index and filter it yourself; it is 1.7 MB.

The files
PathSizeWhat it isLicence
/index.json
{ countries, access, rank, kinds, kindLabels, places: [{ i, n, y, x, c, v, a, q, s: [from, to] }] }
1.7 MB Every place the map can draw, with only what a marker needs: id, name, latitude, longitude, folded search text, access class, collection and volume counts, and the year span its books cover. 15,566 rows. this atlas — none declared
/index-quiet.json
{ places: [ … as above … ] }
2.3 MB The second half of the index — places with nothing catalogued yet. Fetched after first paint so the map draws before it arrives. 24,700 rows, same shape. this atlas — none declared
/p/<place-id>.json
{ id, name, lat, lon, country, names[], collections[], volumes: [{ t, from, to, url, in }] }
40,266 files Everything about one place that a marker does not need: every collection covering it, every volume with its year span and deep link, its other names, which archive holds it, the nearest parishes and the nearest cemeteries. The `i` field of an index row is the filename. NOTE: the volume TITLES here are FamilySearch's catalogue metadata, not this atlas's writing — see the licence column and the note above. this atlas — none declared
/regions.json
{ regions: [{ id, from, to, polity, filedUnder[], note, geo }] }
79 KB The jurisdiction layer — 41 record regions, each an era with the polity that held that ground and the archives its paper went to. This is the file nobody else publishes. this atlas — none declared
/providers.json
{ providers: [{ id, name, kind, access, countries[], url, checked }] }
393 KB 552 providers with their coverage, access class, and the date each was last checked to be alive. this atlas — none declared
/c/<cc>.json
{ cc, name, box: [minLat, minLon, maxLat, maxLon], archives[], … }
214 files One file per country: its bounding box, its archives, and what this atlas holds there. Keyed by ISO 3166-1 alpha-2, lowercased. this atlas — none declared
/s/<3-char>.json
{ n, variants: [{ n, how }], countries: [{ cc, n, how }], tl?: { cc: [decade] }, ctx?: { lang, kind, after, wiki, q }, wk?: { langs, from, etymon, cite }, places?, pg? }
8,227 files The surname register, sharded on the first three folded characters of a name. Which countries attest a name, how many people each counted, and which spellings are linked to which — plus, where they exist, what Wikidata and Wiktionary say the name IS and the decades it was being born in. Drop `wk` and the rest is CC0.
from data/surnames.json and surname-context.json (Wikidata, CC0); the `wk` field from the English Wiktionary (CC BY-SA 4.0, share-alike)
CC0-1.0 — EXCEPT the `wk` field, which is CC BY-SA 4.0
/world-archives.json
{ archives: [{ name, lat, lon, cc, url, kind }] }
49 KB The archives layer — institutions at their street address, with what it takes to get an answer out of them.
from Wikidata — national archives (Q2122214), national libraries (Q22806) and research institutes (Q31855), by country
CC0-1.0
/archives-wikidata.json
{ archives: [{ q, name, lat, lon, cc, site }] }
1.3 MB The wider, unchecked set harvested from Wikidata. Drawn as its own layer because it is not all genealogical and none of it has been verified by hand.
from Wikidata via QLever, P31/P279* Q166118
CC0 1.0 (Wikidata)
/surnames.json.gz
{ name, licence, built, note, surnames: [{ n, countries[], variants[] }] }
19.2 MB The whole surname corpus in one gzipped file, including the 946,575 names that do not earn a page. There is a CSV beside it.
from national statistical registers — see the file's own note
CC0-1.0
/archives-osm.json
{ archives: [{ name, lat, lon, cc, tags }] }
96 KB Archives OpenStreetMap knows about. 572 of 726 are more than 500 m from anything else on this map, so OSM holds buildings the other sets do not. Unchecked. THIS FILE IS SHARE-ALIKE — see the licence column.
from OpenStreetMap, amenity=archive, via the Overpass API.
ODbL 1.0 — © OpenStreetMap contributors
/cemeteries-osm.json
{ cemeteries: [{ name, lat, lon, cc }] }
1.4 MB Named cemeteries, clipped to this atlas's record regions. Unnamed ones are left out: a shape on a map is not a place a researcher can ask about. Share-alike, as above.
from OpenStreetMap — landuse=cemetery and amenity=grave_yard, via Overpass, clipped to this map's record regions.
ODbL 1.0 — © OpenStreetMap contributors
/g/<3-char>.json
{ "<folded name>": [{ n, y, x, cc, alt[] }] }
8,347 files The gazetteer: every settlement the search box can find, sharded on the first three folded characters. This is what makes «Gallignana» resolve to Gračišće. ATTRIBUTION REQUIRED — see the licence column.
from GeoNames per-country dumps, CC BY 4.0 — https://www.geonames.org/
CC BY 4.0 (GeoNames)
/a/<3-char>.json
{ "<folded name>": [{ n, y, x, cc, level }] }
2,848 files Administrative divisions no collection names — findable in the search box, never drawn as a dot, because a district is not a parish.
from GeoNames admin1CodesASCII, admin2Codes and cities5000, CC BY 4.0 — https://www.geonames.org/
CC BY 4.0 (GeoNames)
/rs/<3-char>.json
{ "<folded name>": [{ n, y, x, r }] }
20,198 files Settlements inside a mapped record region. Findable, not drawn.
from GeoNames cities500, CC BY 4.0, clipped to this map's record regions.
CC BY 4.0 (GeoNames)
/bs/<3-char>.json
{ "<folded surname>": [[[communeIndex, count]], total, people] }
4,721 files Belgian surnames at COMMUNE grain — 510,811 rows, and nothing else in this atlas has that grain; every other register answers only «how many in the country». Statbel suppresses anything under five people, so the smallest number published anywhere here is 5. ATTRIBUTION REQUIRED.
from Family names by municipality, 1 January 2026 (Statbel, TA_POP_LST_2026)
CC BY 4.0 (Statbel)
/t/<3-char>.json
{ "<folded name>": [{ n, y, x, county, parish }] }
1,626 files 60,883 Irish townlands — the unit an Irish record actually names. Findable, not drawn: «Glebe» is the name of 213 of them. Share-alike.
from Townlands.ie — county, barony, civil parish and townland boundaries built from OpenStreetMap and Logainm
ODbL 1.0
/it/<3-char>.json
{ "<folded name>": [{ n, y, x, prov }] }
1,153 files 7,894 Italian comuni, 121 of them carrying an official second name.
from Istat, Codici statistici delle unità amministrative territoriali
CC BY 3.0 IT
/sc/<3-char>.json
{ "<folded name>": [{ n, y, x }] }
388 files Scottish civil parishes, from the National Records of Scotland.
from National Records of Scotland — Civil Parishes (WFS)
Open Government Licence v3.0
/ee/<3-char>.json
{ "<folded name>": [{ n, y, x }] }
88 files 113 Estonian parishes and 11 historic counties, names only.
from Rahvusarhiiv — the county and parish vocabularies of the manor and rural-municipality registers
Terms not declared (Rahvusarhiiv)
/cemeteries-wikidata.json
{ features: [{ q, n, y, x, r }] }
3.2 MB Named cemeteries from Wikidata. Drawn as a layer, and listed on a place page as the nearest few — unvisited, and not a claim that a burial register survives.
from Wikidata, instance of (or subclass of) Q39614, within the bounding boxes of this map's record regions. CC0.
CC0 1.0 (Wikidata)
/churches-wikidata.json
{ features: [{ q, n, y, x, r }] }
10.0 MB 108,054 churches. A church is a parish and a parish is where a register was kept, so these are the «nearest parishes» on a place page, with the distance shown.
from Wikidata, instance of (or subclass of) Q16970, within the bounding boxes of this map's record regions. CC0.
CC0 1.0 (Wikidata)
/libraries-wikidata.json
{ features: [{ q, n, y, x, r }] }
985 KB Libraries, as a layer. Unchecked, and not all of them hold anything genealogical.
from Wikidata, instance of (or subclass of) Q7075, within the bounding boxes of this map's record regions. CC0.
CC0 1.0 (Wikidata)
/country-points.json
{ points: [{ cc, n, y, x, p, v, c, s, w, fs }] }
23 KB One point per country, so that clicking anywhere on earth answers with something rather than nothing. this atlas — none declared
/sitemap-index.xml
sitemap index → six sitemaps
— Every page on this site, split by type — places, archives, countries, regions, surnames. this atlas — none declared
/feed.xml
Atom 1.0
— An Atom feed of what changed, one entry per day, generated from the git history. this atlas — none declared
What the numbers are today

40,266 places, 2,828,300 record volumes, 552 providers, 41 jurisdiction regions. Rebuilt whenever anything lands, so these files move under you — there is no version number, because adding a field and calling it v1 forever would be a promise this project cannot keep. Fields are added; existing fields are not quietly repurposed.

Subscribe to the feed to be told when they change, or read what changed. If you build something with this, say so — knowing what the data is used for is the only way to know which parts are worth deepening.