Craft notes. Measured speed. Honest coverage. How we build parseAPI.
Postal names come back readable first. The original-script form sits next to it when it differs.
The marketing plan-selection page and the dashboard billing page share one word on purpose.
One name covers a US county, a French department, and a UK district, because district was already the word for that layer in the most countries.
The lat/lon endpoint started life as an internal grid table called geogrid. Five name candidates got floated for the public version, then one line ended the argument outright.
/status still works. It just quietly hands you to /pulse instead of stopping there.
Elevation returns a real negative number over open ocean, the same field as anywhere else.
/postal/{code}/nearby takes a miles query param instead of a /radius/25 path segment, because 25 is a setting, not an id.
emoji ships on the same /country call as capital and currency, no separate endpoint.
AI crawlers resolve with a name, category, and producer, not just a bot flag.
The dashboard renamed Logs to Activity and reordered the nav to put the product before the bill.
A coordinate on a lake or river resolves to its surrounding country and state, the same as dry land.
bot, mobile, valid, disposable, datacenter. Every flag in the API is one plain word answering a plain question.
MP is Madhya Pradesh in India and the Northern Mariana Islands in the US, same code, same endpoint, two different records.
District, point, and postal all hand back the same FIPS-style code for the same county.
/state/{code}/districts nests every county or department under the state, the same pattern one level down from country.
/country/{code}/states nests the full subdivision list under the country, no separate lookup required.
/email checks format, domain, and whether the address is a generic role inbox, as three separate fields.
/phone returns e164, national, and international formatting in the same response, no client-side formatting needed.
The background fetch fleet got renamed from worker to bot, and that name rides along in the User-Agent on every outbound request it makes.
A redirect turned into a file download in Safari. The cause was a header, not the browser.
A dropped database column stayed referenced by a default value in the auth config. New accounts failed at creation.
Every key sits under one team, and every key under that team draws from the same quota.
The same API key authenticates postal, IP, email, phone, and every other route. No per-endpoint keys to manage.
{ parseAPI } is plain ASCII, typeable anywhere, and valid JavaScript.
Free and paid data ship from the same endpoint. Upgrading is one query parameter, not a new client.