gwt-read geneteka: Polish parish and civil registers¶
Geneteka, run by the Polish Genealogical Society, indexes births, marriages and deaths from Polish parish and civil registers, and from some in Ukraine, Belarus and Lithuania, region by region. https://geneteka.genealodzy.pl/
Commands¶
gwt read geneteka search --region 07mz --surname S [--kind births|marriages|deaths] [--given G] \
[--surname2 S2] [--given2 G2] [--from 1800] [--to 1850] [--parish N] [--exact] \
[--count 50] [--page 1] --out DIR
gwt read geneteka control
--regionis the site's region code:01dsdolnośląskie,02kpkujawsko-pomorskie,03lblubelskie,04lslubuskie,05ldłódzkie,06mpmałopolskie,07mzmazowieckie,71waWarszawa,08opopolskie,09pkpodkarpackie,10plpodlaskie,11pmpomorskie,12slśląskie,13skświętokrzyskie,14wmwarmińsko-mazurskie,15wpwielkopolskie,16zpzachodniopomorskie,21ukUkraine,22brBelarus,23ltLithuania,25poother.- The site needs a surname to search a whole region; an empty
--surnameis refused (exit 64) before any request. --parishis the site's numeric parish id (itsrid, from the parish list of the search page); default every parish.--countis 10, 25 or 50 rows a page.
Never in bulk¶
Geneteka's robots.txt asks for Crawl-delay: 120: one request every two minutes. This source keeps to it whatever a lane asks for, so it is for a person's own searches, a handful at a time. A loop over surnames or regions is what that delay forbids; do not build one. Answers are cached 30 days so a repeated search costs nothing.
How it reads¶
The search page is a shell: its table fills from a JSON endpoint, api/getAct.php, with the page's own query fields. The reader asks that endpoint directly, once per search.
What a candidate is¶
An index entry, a lead: open the scan before citing it. id is the kind's letter and the entry's own number (B-12345678, the number of its "report a bug" link). A birth has its name, act (the record number), the year, place and parish, and the father and mother as relatives. cells keeps every cell of the row in order; for marriages and deaths the reader does not split the cells into names yet, and leaves name empty rather than guess it from a column order nobody has confirmed. remarks is the site's own remark; link is the first link the row carries (a scan on metryki.genealodzy.pl, or the site of the archive or diocese that holds the book). Geneteka has no page per entry, so url is the search page that shows it.
When it stops¶
"None" is the answer's own count: recordsFiltered 0 with no row. A page past the last row is the end: exit 2, with past the end on the results line. An answer of another shape is a STOP, exit 1; an HTML page instead of the answer is a STOP, exit 3 (the gate pauses every lane); a 5xx or no answer is an outage, exit 3.
Canary¶
--region 07mz --surname Kowalski, at least 50 rows (the site gave about 79,700 births in November 2026). A control run takes two minutes per canary, at the site's pace.
The canary has already caught one trap: without the headers its own page sends (X-Requested-With, and the search page as Referer), the site answered 6 rows of a 50-row page. The reader sends them, and a page with fewer rows than it should hold is a STOP (exit 1), never a short list read as complete.