Postal Code & Geocoding API API
The Geo & Postal API returns administrative-region and postal reference data as clean JSON.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
The primary eu_regions endpoint returns NUTS regions and LAU for a query, and you can pull TR and US regions, Indian postal data, US census areas, admin boundaries and a general postal_lookup. It is built for logistics, address validation and geo analytics that need authoritative region data. One ReefAPI key, one shared credit pool, the standard envelope.
Real request and response JSON
Captured from the indexed primary action, eu_regions, on .
{
"method": "POST",
"url": "https://api.reefapi.com/geo-postal/v1/eu_regions",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"lat": 52.52,
"lon": 13.405
}
}{
"ok": true,
"meta": {
"api": "geo-postal",
"endpoint": "eu_regions",
"mode": "live",
"latency_ms": 383.2,
"record_count": 1,
"bytes": 0,
"cache_hit": false,
"attribution": "© EuroGeographics (NUTS/LAU) · © European Union - GISCO TERCET (CC-BY-SA 4.0) · geoBoundaries CGAZ www.geoboundaries.org (CC-BY 4.0) · GeoNames www.geonames.org (CC-BY 4.0) · TurkiyeAPI (MIT) · India Post pincode directory (GODL-India)"
},
"data": {
"normalized_input": {
"lat": 52.52,
"lon": 13.405
},
"match_type": "exact",
"confidence": 0.98,
"low_confidence": false,
"source": "gisco_nuts_2024",
"dataset_version": "nuts2024-01m|lau2024-01m|cgaz-cc-by-4.0|pcode2025-v2.0|geonames-2026-06|turkiyeapi-2025|inpin-godl-2026",
"found": true,
"nuts0": {
"code": "DE",
"name": "Deutschland"
},
"nuts1": {
"code": "DE3",
"name": "Berlin"
},
"nuts2": {
"code": "DE30",
"name": "Berlin"
},
"nuts3": {
"code": "DE300",
"name": "Berlin"
},
"country": {
"code": "DE",
"name": "Deutschland"
},
"lau": {
"gisco_id": "DE_11000000",
"lau_id": null,
"name": "[redacted-name]",
"match_type": "exact"
}
}
}What the Postal Code & Geocoding API API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| eu_regions | Coordinates OR postal code → EU/EFTA/candidate statistical regions: country, NUTS 0-3 hierarchy, LAU commune (GISCO NUTS-2024 + LAU-2024 + TERCET pc2025). | Ops teams call eu_regions to get coordinates OR postal code → EU/EFTA/candidate statistical regions. | lat, lon, postal_code, country, include_geometry |
| tr_regions | Türkiye: koordinat, posta kodu VEYA il/ilçe/mahalle adı → resmî idari hiyerarşi (il+plaka, ilçe, mahalle/köy, posta kodları) + NUTS-TR istatistik kodları. | Developer tools call tr_regions to get türkiye. | lat, lon, postal_code, province, district, ... |
| in_postal | India: PIN code OR post-office name → post offices, district, state, lat/lon centroid (official All-India Pincode Directory). | Validation workflows call in_postal to get india. | pincode, office, state, district |
| us_regions | United States: ZIP code OR coordinates → state, county + 5-digit county FIPS, place, ZIP centroid, and the CGAZ state/county boundary. Built WITHOUT census.gov (GeoNames ZIP directory carries county FIPS; ANSI state-FIPS is a public-domain constant). For census-grade ZCTA + tract/block GEOIDs use the `us_census` action (TIGER/ZCTA polygons + Census Geocoder, gov-pending/91). | Data-quality teams call us_regions to get united States. | postal_code, lat, lon, include_geometry |
| us_census | United States census-grade geocode: street ADDRESS, ZIP, or coordinates → state, county (+5-digit FIPS), census TRACT GEOID, census BLOCK GEOID, ZCTA, and tract/ZCTA land-area — with match_type + confidence. Coordinates/ZIP resolve the ZCTA offline from pinned TIGER/ZCTA-2024 polygons (zero egress); the authoritative tract/block GEOID + address geocoding come from the US Census Geocoder, cached. US-Gov public domain (Title 17 §105). | Ops teams call us_census to get united States census-grade geocode. | address, postal_code, lat, lon, include_geometry, ... |
| admin_boundary | GLOBAL coordinates → administrative boundary hierarchy ADM0/ADM1/ADM2 (geoBoundaries CGAZ composite, CC-BY 4.0). | Developer tools call admin_boundary to get gLOBAL coordinates → administrative boundary hierarchy ADM0/ADM1/ADM2 (geoBoundaries CGAZ com…. | lat, lon, levels, include_geometry |
| postal_lookup | country + postal code → region metadata for ~100 countries (GeoNames postal directory) with country-specific enrichment (EU→NUTS3, TR→mahalle, IN→offices). | Validation workflows call postal_lookup to get country + postal code → region metadata for ~100 countries (GeoNames postal directory) with c…. | country, postal_code |
| postal_search | country + city/place → its postal codes (zip-by-city); country + admin1 only → that state's codes (zip-by-state); country only → the country's states/regions list (GeoNames directory). | Data-quality teams call postal_search to get country + city/place → its postal codes (zip-by-city); country + admin1 only → that state's c…. | country, place, admin1, limit |
| postal_distance | Great-circle distance between two postal codes (same or different countries). | Ops teams call postal_distance to get great-circle distance between two postal codes (same or different countries).. | country, from, to, to_country, unit |
| postal_radius | All postal codes within a radius of a postal code (centroid-based). | Developer tools call postal_radius to get all postal codes within a radius of a postal code (centroid-based).. | country, postal_code, radius_km, limit |
| batch | Resolve up to 50 mixed lookups in one call (cheap local queries). | Validation workflows call batch to resolve up to 50 mixed lookups in one call (cheap local queries).. | items |
Call eu_regions from your stack
curl -X POST https://api.reefapi.com/geo-postal/v1/eu_regions \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"lat":52.52,"lon":13.405}'import requests
r = requests.post(
"https://api.reefapi.com/geo-postal/v1/eu_regions",
headers={"x-api-key": REEF_KEY},
json={
"lat": 52.52,
"lon": 13.405
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/geo-postal/v1/eu_regions", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"lat": 52.52,
"lon": 13.405
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.geo-postal.eu_regions with {"lat":52.52,"lon":13.405}.Who uses this API and why
- Logistics tools call postal_lookup to map a postal code to a region.
- Address validation uses eu_regions and us_regions to normalize locations.
- Analytics use us_census and admin_boundary to aggregate by area.
Questions developers ask before integrating
What is the Postal Code & Geocoding API API?
Postal Code & Geocoding API API is a ReefAPI endpoint group for postal code & geocoding api It returns live JSON through POST requests under /geo-postal/v1.
Is the Postal Code & Geocoding API API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Postal Code & Geocoding API calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Postal Code & Geocoding API login or account?
No login to Postal Code & Geocoding API is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Postal Code & Geocoding API data?
The page example is captured from a live eu_regions call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Postal Code & Geocoding API API use?
Postal Code & Geocoding API actions currently cost 1-3 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Postal Code & Geocoding API from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call geo-postal actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Postal Code & Geocoding API API a Postal Code & Geocoding API scraper?
It is the managed alternative to a DIY Postal Code & Geocoding API scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same postal code & geocoding api back as clean JSON.
Why does my Postal Code & Geocoding API scraper keep getting blocked?
Most Postal Code & Geocoding API scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.