2026-09-16
Address intelligence round two: what a register knows about a building, and what the parser did to your input
The address answer grows from 45 to 53 fields: a confirmation map per part, a changes list, the building name, a region check, building use and units, coordinates from the registers, a street suggestion and a premise key. Postcode directories for a hundred countries, streets and towns for Great Britain, US address ranges, seven new national registers, registered agents, a streets endpoint, five test addresses, a fields option and three new weights.
- The parser stopped losing four kinds of address. A last line that only repeats the country ("10 Downing Street, London, SW1A 2AA, United Kingdom", "…, CA 94043, USA", "…, 10115 Berlin, Germany") used to become the town, with the real town demoted to a dependent locality; it is now set aside, and when no country was sent and the line names exactly one, it becomes the country. A care-of or attention line ("c/o Jane Smith" above "221B Baker Street") used to become the street; it is dropped, because the product is about places. A building name above a numberless street ("Rose Cottage, High Street") used to become the street with the street demoted; it is now
building, a new field that is also accepted as a separated input and as a list column headed building, building name, premise or house name. And a house-number range ("71-75 Shelton Street") used to fold to a number no register lists; it is now asked as written and then by either end, in the registers, the company register and the mailbox lists alike. Each of these moves is recorded in a newchangeslist —country_line_removed,care_of_removed,building_separated,organization_separated,administrative_area_folded,box_line_moved,private_mailbox_moved_to_unit— so the answer says what it did to your input. - 53 fields, and a map of who confirmed what. Beside
building:confirmation, an object naming for each of the postcode, the street, the house number, the town and the region which dataset stood behind it (postcode_directory,postcode_area,register,range,company_register,mail_drop_list,pattern),unconfirmedwhere a dataset could have and did not, or null where nothing could check;administrative_area_matches_postcode;premise_key, the hex digest of the building that every spelling of one address shares and that feedback and suppressions are filed under;building_useandis_multi_unitas the register declares them;street_suggestion; andchanges. The guide at /guides/how-to-read-the-address-confirmation-map reads the map field by field;unconfirmedis neverwrong. - Postcode directories for a hundred countries. The GeoNames postal-code dump, CC BY 4.0, installs one directory per country beside Britain's ONS directory: 105 countries and 1,097,486 codes from the 16 September copy, with the places each code is written with, the region and its code, and a centroid. Fifteen directories — the United States, Germany, France, Spain, Italy, Austria, Switzerland, Belgium, Denmark, Norway, Finland, Slovakia, Japan, Mexico and India — reach their operators' published totals and are recorded complete, so a code they lack answers
postcode_not_found; the rest are partial and deny nothing. Canada, the Netherlands and Ireland publish only the forward sortation area, the four-digit district and the routing key, so those three match on their prefix and are partial whatever their size. Two consequences:administrative_area_matches_postcodecompares the written state or province with the directory's, and a disagreement carries a newregion_mismatchweight of 30; andlocality_matches_postcodenow checks the town against every place the directory lists for the code, then — before scoring anything — against every place in the postcode's area, so a post town written for a settlement readsconfirmation.locality: postcode_areawith no weight. The United States dump carries only each ZIP's default city, so an alternate city name there is reported as not matching and never scored. - Great Britain gets its streets and its towns. Ordnance Survey's Open Names, Open Government Licence, is installed as a register of streets keyed by postcode district: 999,065 road rows compile to 876,830 street keys in a 7.3-megabyte index, Welsh names indexed beside English ones. A British street the file lists answers
match_level: streetwithconfirmation.street: register;existsstays null because a register of streets lists no buildings, and a miss costs nothing because a road that runs through several districts is filed under one of them (87.3 percent of 49,106 Companies House street lines matched). The same file's postcode rows gave 1,742,466 of 1,749,109 installed British postcodes their places, solocality_matches_postcodeanswers in Great Britain for the first time, lenient to the region and the borough. The country page for GB says all of this in its own words. - A register now says where a building stands. The premise index keeps, beside every key, what the register publishes about the building: its position to about 1.2 metres, its use where the register categorises buildings, and its unit rows. A
premisematch answerslatitudeandlongitudefrom the register withlocation_source: register, falling back to the postcode centroid as before;building_usereads residential, commercial, mixed, industrial, institutional, agricultural or other, andis_multi_unitis true at two or more listed units, false only where a register declares its units and lists none (the Austrian register counts dwellings), and null otherwise. National grids are converted in code — Swiss LV95, the Austrian Gauss-Krüger zones, Czech Křovák, Norwegian UTM 33 — and each conversion was checked against proj4js: the transverse Mercator and Helmert paths agree to between 0.02 and 0.06 metres, the Swiss approximate formula to between 0.4 and 2.3 metres. Recompiling the Swiss, Austrian, Czech and Norwegian registers grew each premise index from eight to fifteen bytes a key — the Swiss one from 25.8 to 48.1 megabytes — and the Federal Palace in Bern, the Storting and Oslo City Hall each answered within about twenty metres of their reference positions. A register compiled before this answers as it did until it is recompiled. - Seven more national registers, all open. Belgium's BeST address register in its three regional files (CC BY 4.0: Brussels 451,111 buildings, Wallonia 1,663,329, Flanders 2,798,435, every language spelling of a street indexed), Luxembourg's national addresses (CC0, 357,776 keys, filed under both spellings of the postcode), Latvia's State Address Register (CC BY 4.0, 322,198 buildings), Australia's G-NAF (CC BY 4.0 with its end-user clause against mailing lists; verified on the real tables, full compile pending), Denmark's national addresses (the agency's free geographic data; parser verified on fixtures, full compile not yet run) and, when a LINZ key is configured, New Zealand's street addresses (CC BY 4.0). Each names its licence in the answer's sources and its coverage claim in
register_coverage. The Dutch BAG is not among them: its extract is a 3.6-gigabyte archive of archives that the reader cannot yet open, and it will come when it can. - United States address ranges. The Census Bureau's TIGER/Line address-range tables, public domain, compile into a range table consulted after the National Address Database has missed: a number inside a range published for its street answers a new
match_level: rangewithconfirmation.house_number: rangeandexistsnull, and a street the table knows whose number falls outside every range answersstreetwith a newnumber_out_of_rangeweight of 20. A street the table does not know costs nothing, because the table is partial by measurement: not every edge carries a range and a street on a ZIP boundary can be filed under its neighbour. Delaware compiled in 23 seconds to 139,683 ranges on 24,424 streets; the national run is a few hours and about a gigabyte, started by hand. - Street suggestions, and a streets endpoint. Every register sync now keeps the streets it lists under each postcode by name. An address followed no further than its postcode answers
street_suggestion, the register's spelling of the closest street (Banhofstrasse becomes Bahnhofstrasse, Limatquai becomes Limmatquai), andGET /api/v1/address/streets?country=CH&postal_code=8001lists every street the register holds under a postcode — 200 in central Zürich — for one credit when it answers and nothing when it does not, with a seven-day repeat.GET /api/v1/address/postcode/{postcode}answers the same streets from the open registers wherever a listing is installed, at one credit, and keeps the licensed partner's full list for Great Britain and Ireland when one is configured. - Registered agents are named for what they are. A bundled list of registered-agent and formation services' own published offices — seventeen operators on 16 September, from the Delaware and Wyoming agents to the London formation addresses — answers
mail_drop_source: registered_agentwith the agent's name inmail_drop_provider, taking precedence over the company-cluster heuristic. The weight is the mail-drop 50, because nobody lives there; the guide says why a company registered there has done nothing unusual. - Three new weights, fourteen in all.
region_mismatch30,street_not_found20 (a complete register of streets has no such street) andnumber_out_of_range20 join the published table;locality_mismatchkeeps its 30 but fires only when the town is found nowhere in the postcode's area and only where the directory lists every place a code is written with. - Five test addresses, a fields option, a ninth comparison. The houses numbered 1 to 5 on Spaw Test Street, Springfield, IL 99999 answer a valid address, a mail drop, an address a complete register lacks, a terminated postcode and — written "5 Spaw Test Street PMB 5" — a private mailbox, free, unlogged and recognised by every path including the sandbox key.
fieldsonPOST /api/v1/addressand the browser endpoint keeps only the keys you name. And the cross-signal consistency check emits a ninth comparison,phone_address_region, the state a North American number was issued in against the address's region — evidence only, never a flag, because people keep their numbers when they move. - Deliberately not built. No cross-account address reputation, still: a postal address is where somebody lives, and a shared "post fails here" database would be a database about residences. No Dutch register yet, for the reason above. And no licensed delivery-point answers:
is_deliverable,is_cmra,is_vacantandis_residentialstay null until a partner is enabled, andbuilding_usefrom a cadastre is never presented as the postal service's residential indicator.
markdown version: /changelog/2026-09-16-address-intelligence-round-two.md · atom feed: /changelog.atom