Tools & data
Free geocoders tested on 192 Sheffield schools: the point is good, the policy is the limit
A tutorial published on 3 November 2026 by TechnicalGIS measured two open UK geocoders against official coordinates for 192 schools. Read with the US Census Geocoder's rules, it shows where free address-to-point tools hold up for property work and where they fail without warning.
TechnicalGIS, a UK GIS tutorial site, published a geocoding test on 3 November 2026 in which the open postcodes.io service placed all 192 open schools in Sheffield, England, in two bulk requests. The median error was 88 m against the Department for Education's own coordinates, and 95% of schools landed within 250 m. For a free tool that is a good result. The same test also shows why one geocoder is not enough: the free route to a named place fails quietly, and one name match put a Sheffield school in Doncaster, 27 km away.
I did not re-run the test. It is a tutorial with downloadable scripts, not a peer-reviewed study, and it covers schools, which are well-mapped places. This note reads its published numbers and the providers' own rules, then asks what they mean for anyone who joins addresses to flood zones, catchments or census areas.
An 88 m median error is fine for a ward and wrong near a boundary
The author measured each method against the official coordinates, projected to the British National Grid so that error is simply distance in metres. Postcodes.io returned the centroid of each school's postcode. A centroid is not a building, so an 88 m median is about what the method can give. It also returns ward, local authority and census-area codes with each point, which saves a later spatial join.
For a property decision the question is where the boundary is. Assigning a house to a ward or a local authority tolerates an error of tens of metres, because most addresses sit well inside the polygon. A school catchment line or a flood-zone edge is different. A point that is 88 m from the truth, or 250 m for one address in twenty, can fall on the wrong side of the line whenever the property is that close to it. The error is acceptable for a portfolio count and not for a single underwriting file next to a boundary.
Full postal addresses did worse than the postcode. Most matched only the street, with a median error of 102 m. Adding detail to the query did not add accuracy, because the geocoder could not find the building.
A name match is closer when two methods agree, and wrong when it stands alone
The author also queried Nominatim, the geocoder built on OpenStreetMap data, by school name. The median error was 43 m, better than the centroid, but the method missed 17 schools outright and returned 175 matches.
The 175 split in a way that matters. For 158 schools the name match lay within 250 m of the postcode centroid. For the other 17 the two methods disagreed by more than that, and the worst name match was the Doncaster case. A confident wrong point of this kind will not show up in a median.
The author's rule is to accept the name match when it is within 250 m of the centroid and otherwise fall back to the centroid. Of the 192 schools, 158 took the Nominatim point and 34 took the postcode point. Those 34 are the 17 schools with no name match plus the 17 where the methods disagreed. The combined median error was 46 m, with 94% within 250 m, and the rule needs no reference data. Disagreement between the two methods tracked the true error, which is the tutorial's central claim.
Two limits apply. The rule sends all 17 disagreements to the centroid, including cases where the name match may have been the right one, so it trades some accuracy for safety. And it flags a problem without resolving it. The 17 schools are a review queue, not an answer.
Free tools cost hours and discipline, and the US route interpolates
None of these tools charges a fee. Each has a constraint that behaves like one. The OpenStreetMap Foundation's policy for the public Nominatim server sets an absolute maximum of 1 request per second, requires an identifying User-Agent and a single thread, and requires results to be cached. Scripts that run longer than a day, or at regular intervals, are restricted to 4 requests per minute. The policy treats periodic requests as bulk geocoding and strongly discourages them.
The tutorial's own run shows the rate in practice: 576 queries for 192 schools took 742 seconds, and the rerun from cache took 3 seconds. Scaling is simple division. At 1 request per second, 10,000 addresses take 10,000 seconds, about 2.8 hours. At 4 per minute the same job takes 2,500 minutes, about 41.7 hours. A one-off file of a few hundred addresses fits the public server. A recurring refresh of a national loan book does not, and the policy points heavy use to a self-hosted instance, which removes the limit and adds server work.
In the United States, the Census Bureau runs a free batch geocoder, and its API documentation was last updated in February 2026. A batch file is capped at 10,000 records and 5MB. Results come from address ranges in the Master Address File and TIGER database, and coordinates are interpolated along the street range. The Bureau notes that ranges include every possible structure number, even where no building exists. A match therefore means the number falls in a range, not that a building stands there. The payoff is that state, county, tract and block codes join straight to Census tables. The Federal Communications Commission's guide separates exact matches, non-exact matches and no match, so a pipeline that keeps those labels can send the middle group to review.
What to watch next
The finding that agreement predicts error rests on schools, which are named, mapped and unique. Homes are less well mapped. The test that would confirm or overturn the rule is a replication on a few hundred residential addresses with an official reference, checking whether 250 m agreement still separates good points from bad. The tutorial's scripts are public, so anyone with a reference file can run it.
Until that is done, the practice is the same for any property dataset. Store the source of each coordinate, its match type, and its distance from a second method, and send the disagreements to review. A coordinate without those three fields is a draft. Also watch the Nominatim policy page and the Census documentation for revisions, since both set limits that change the cost of a recurring job.
Questions
- Can I use the public Nominatim server to geocode a whole loan book?
- Not as a regular job. The OpenStreetMap Foundation policy sets a maximum of 1 request per second, strongly discourages bulk and periodic geocoding, and limits scripts that run longer than a day or at regular intervals to 4 requests per minute. At that rate 10,000 addresses take about 41.7 hours (10,000 divided by 4 per minute). Large or repeated volumes belong on a self-hosted instance.
- How accurate is a postcode centroid for property work?
- In TechnicalGIS's test of 192 Sheffield schools, postcodes.io had a median error of 88 m and 95% of schools within 250 m. That suits ward-level or authority-level joins, not decisions next to a flood-zone or catchment boundary.
- What does a Census Geocoder match guarantee?
- Only that the address falls in an address range. Coordinates are interpolated along the street, and ranges include structure numbers where no building exists. Keep the match label so non-exact rows can be reviewed.
Sources
- Geocoding in Python: batch and reverse geocoding with geopy, Nominatim and postcodes.io (TechnicalGIS, 3 November 2026)
- Nominatim Usage Policy, OpenStreetMap Foundation
- Geocoding Services Web API, US Census Bureau
- Census Geocoder Documentation, US Census Bureau
- Batch Address Processing, Census Geocoder
- How to Use the Census Geocoder, FCC
How we write: each note starts from published data and the sources listed above, is drafted with AI and passes automatic checks on every figure, link and claim before it goes out. Analysis, not investment advice.
More research notes
Mortgage lock-in may help explain why new US houses now sell below existing ones
The median new US house sold for $400,400 in September 2026, $17,100 below the $417,500 median for existing homes. Rate lock-in is one plausible reason builders supply more of the marginal house, but no release isolates it, and part of the price gap is mix.
One energy shock, three mortgage designs: who pays the higher rate depends on the loan
The US 30-year fixed rate went from 6.76% to 7.40% in four weeks and has since eased to 7.18%. UK quoted fixes sit about 95 basis points above pre-conflict levels, and the euro-area composite is 3.62%. The loan design decides who feels it.
Turin's court auctions: only round 2 sits on the legal schedule, and round 5 jumps to 79.5%
In Turin, the median asking price of later court auction rounds is 75.3% of the first ask in round 2, 61.2% in round 3, 55.9% in round 4 and 79.5% in round 5. Only round 2 sits close to the discount rule in Italian foreclosure law. Rounds 3 and 4 sit above it, and round 5 breaks the pattern.