OpenStreetMap Nominatim Geocoder avatar

OpenStreetMap Nominatim Geocoder

Pricing

from $8.99 / 1,000 result items

Go to Apify Store
OpenStreetMap Nominatim Geocoder

OpenStreetMap Nominatim Geocoder

Batch geocode addresses, reverse-geocode coordinates, or look up places by OSM ID using the public Nominatim API. Returns display name, address parts, bounding box, and OSM type and ID for each result.

Pricing

from $8.99 / 1,000 result items

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

0

Monthly active users

a day ago

Last modified

Share

ParseForge

OpenStreetMap Nominatim Geocoder

Geocode addresses, reverse-geocode coordinates, or look up places by OSM ID, up to a million per run. Every result returns the full display name, structured address parts, bounding box, and OSM type and ID. No API key required. Export to CSV, JSON, Excel, or XML.

Nominatim's public API rate-limits you to one request per second and caps search results at 40 per query. This Actor batches your queries, manages the polite-use delay, and collects every match into one flat dataset. It handles search, reverse, and lookup modes so you can turn a list of addresses, coordinates, or OSM IDs into structured location data without writing a single line of code.

Who uses itWhat they scrape OpenStreetMap Nominatim for
Data analystsEnrich a spreadsheet of addresses with coordinates and canonical place names.
Logistics plannersConvert a list of delivery coordinates into full street addresses for route planning.
GIS specialistsFetch the bounding box and administrative hierarchy for a set of OSM relation IDs.
Market researchersGeocode a list of store names or landmarks to map competitor locations.

What it does

This Actor geocodes free-text queries, reverse-geocodes latitude/longitude pairs, or fetches places by OpenStreetMap node, way, or relation ID, and returns each result as a flat row with the full address and bounding box.

  • 🔎 Search mode: Free-form address or place name queries, with optional country and language filters.
  • 📍 Reverse mode: Feed it latitude,longitude pairs and get back the nearest address and all address components.
  • 🆔 Lookup mode: Fetch a place directly by its OSM type and ID (node, way, or relation).
  • 🌐 Language preference: Request display names and address parts in your choice of language.
  • 🗺️ Country restriction: Limit search results to one or more ISO 3166-1 alpha-2 country codes.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with OpenStreetMap Nominatim data

🗺️ Geocode a list of landmarks.

A travel researcher pastes 200 landmark names into search mode and exports a CSV with coordinates and full addresses for mapping.

📦 Reverse-geocode delivery coordinates.

A logistics analyst feeds a list of GPS pings into reverse mode and gets back street addresses to validate drop-off zones.

🏛️ Fetch administrative boundaries by OSM ID.

A GIS specialist uses lookup mode with a list of relation IDs to retrieve the bounding boxes and hierarchy of city and state boundaries.

🌍 Build a multilingual place database.

A developer runs the same search queries with different language settings to collect place names in English, Spanish, and Japanese for a localization project.

Why choose this scraper

What you get
No API keyTalks directly to the public Nominatim endpoint with polite-use delays built in.
Three modesSearch, reverse, and lookup cover every common geocoding workflow.
Batch inputPaste hundreds of queries, coordinates, or OSM IDs and collect all results in one run.
Structured outputEvery row includes the display name, address breakdown, bounding box, and OSM type and ID.

How it compares

No other Store actor targets OpenStreetMap Nominatim the same way, so the honest comparison is with the alternatives teams actually weigh.

OpenStreetMap Nominatim GeocoderBuild it in-houseBy hand
SetupRun it now, zero configDays of engineeringNone, but hours per pull
When OpenStreetMap Nominatim changesMaintained for youYou fix itYou re-learn the page
Proxies, retries, anti-botBuilt inYour problemBrowser only
OutputFixed JSON schema, CSV/Excel exportWhatever you buildCopy-paste
CostPay per resultEngineering timeAnalyst hours

Configure the run

Drive the Actor from search queries, coordinate pairs, and OSM IDs, alone or together, and filters like country codes and language run as each query is sent so only matching places reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
"maxItems": 10,
"mode": "search",
"queries": [
"Eiffel Tower",
"Times Square NYC",
"Colosseum Rome",
"Tokyo Tower",
"Sydney Opera House",
"10 Downing Street London",
"Brandenburg Gate Berlin",
"Statue of Liberty",
"Taj Mahal",
"Christ the Redeemer Rio"
],
"coordinates": [
"48.8584,2.2945",
"40.7580,-73.9855",
"41.8902,12.4922"
],
"osmIds": [
"R146656",
"R62422",
"R1221769"
]
}

A larger pull:

{
"maxItems": 200,
"mode": "search",
"queries": [
"Eiffel Tower",
"Times Square NYC",
"Colosseum Rome",
"Tokyo Tower",
"Sydney Opera House",
"10 Downing Street London",
"Brandenburg Gate Berlin",
"Statue of Liberty",
"Taj Mahal",
"Christ the Redeemer Rio"
],
"coordinates": [
"48.8584,2.2945",
"40.7580,-73.9855",
"41.8902,12.4922"
],
"osmIds": [
"R146656",
"R62422",
"R1221769"
]
}

Pricing

Pay-per-result: $0.01199 per result collected. You pay only for the results written to your dataset.

Results collectedApproximate cost
100 results$1.20
1,000 results$11.99
10,000 results$119.90

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the OpenStreetMap Nominatim Geocoder.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to OpenStreetMap Nominatim through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/nominatim-osm-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results for my search query?

Check that your query is specific enough. Very broad terms may return no match. Also verify that your country codes filter, if set, is not excluding the expected region.

Why is the Actor running slowly?

The Actor adds a mandatory one-second delay between requests to comply with Nominatim's usage policy. Processing many queries will take time proportional to the number of requests.

Why do I get fewer results than my limit per query setting?

Nominatim returns only the matches it finds. If a query has fewer matching places than your limit, you will receive only those matches. The hard cap is 40 per query on the public server.

Why are some address fields empty in my results?

Nominatim populates address components based on what is mapped in OpenStreetMap. Some places have less detailed address data than others, so fields like postcode or city may be missing.

Why does my lookup by OSM ID fail?

Ensure the ID is still valid in OpenStreetMap. Deleted or merged objects will not return a result. Also verify the format: a letter (N, W, R) followed directly by the numeric ID, with no spaces.

FAQ

QuestionAnswer
Do I need an API key or a Nominatim account?No. This Actor uses the public Nominatim endpoint. It respects the usage policy by adding a one-second delay between requests.
How many results can I get per search query?The public Nominatim server caps results at 40 per query. You can set a lower limit in the input, and you can run many queries in one batch to build a larger dataset.
What is the difference between search, reverse, and lookup modes?Search mode turns text like 'Eiffel Tower' into coordinates. Reverse mode turns a latitude,longitude pair into an address. Lookup mode fetches a place directly by its OSM type and ID, such as a node, way, or relation.
Can I filter search results by country?Yes. Use the country codes field with comma-separated ISO 3166-1 alpha-2 codes, like 'us,ca,mx', to restrict results to specific countries.
What language will the place names be in?You set the preferred language in the input. Nominatim will return the display name and address components in that language when a translation is available, falling back to the local name otherwise.
How do I format coordinates for reverse mode?Enter one latitude,longitude pair per line, like '48.8584,2.2945'. The Actor sends each pair as a separate reverse-geocoding request.
How do I format OSM IDs for lookup mode?Use the format
Is there a limit on how many queries I can run?You can set the maximum number of places to collect per run up to 1,000,000. The Actor will stop when it reaches that total or exhausts your input list.
What export formats are supported?You can export your dataset to CSV, JSON, Excel, or XML from the Apify platform.
Can I mix search queries, coordinates, and OSM IDs in one run?No. You pick one mode per run. Run the Actor multiple times with different modes if you need to process different input types.

Browse the full ParseForge collection for more scrapers.

🆘 Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by OpenStreetMap Foundation. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.