ParseForge Scrapers

OpenStreetMap POI Scraper

parseforge/overpass-osm-poi-scraper

Lead generationDeveloper toolsAutomation

Scrapes OpenStreetMap points of interest by place name or coordinate. Returns each POI as a flat row with name, address, coordinates, and category. Supports ready made categories and custom OSM tag filters.

Run this scraper See the API call
Total runs
185
Bookmarked
0
Last modified
2 days ago

This scraper was last updated on .

What does the OpenStreetMap POI Scraper return?

ParseForge

OpenStreetMap POI Scraper

Scrape OpenStreetMap POI data for any city, neighborhood, or coordinate. Get restaurants, cafes, shops, and more with name, address, coordinates, and category. Export to CSV, JSON, Excel, or XML.

OpenStreetMap's public data is huge, but querying it by hand means writing Overpass QL or clicking through the website. This Actor reads the Overpass API directly, resolves a place name to a map area, and returns every matching point of interest in one flat row. No API key, no rate-limit headaches, no GIS setup.

Who uses it What they scrape OpenStreetMap for
Market researchers Which businesses exist in a target city or district
Real estate analysts What amenities are within walking distance of a property
Local marketers Which shops and services to contact for partnerships
GIS specialists A clean POI dataset to merge into their own maps
App developers Seed data for location-based features

What it does

This Actor collects OpenStreetMap points of interest by place name or coordinate and returns each one as a flat row with its name, address, coordinates, and category.

  • πŸ“ Place or coordinate search: type a city name like 'Berlin, Germany' or give a latitude, longitude, and radius.
  • 🏷️ Ready made categories: pick from 45 common POI types, from restaurants and cafes to schools and charging stations.
  • πŸ”§ Custom OSM filters: add raw Overpass tag filters like 'amenity=cinema' or 'shop=bicycle' for anything not in the list.
  • πŸ“¦ Flat output: every place comes back as one row with name, address, coordinates, and category, ready for CSV or JSON.

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

What you can do with OpenStreetMap data

πŸ“Š Build a local business list.

A market researcher scrapes all restaurants and cafes in Berlin to see which areas are saturated and where a new concept could fit.

🏑 Score a neighborhood for a property.

A real estate analyst pulls schools, parks, and supermarkets within 1.5 km of a listing to enrich a walkability report.

πŸ—ΊοΈ Feed a custom map.

A GIS specialist collects all EV charging stations in a region and merges the flat rows into their own spatial database.

πŸ“ž Find local partners.

A marketer scrapes gyms and beauty salons in a city to build a contact list for a B2B campaign.

Why choose this scraper

What you get
No Overpass QL needed Pick categories from a list or paste simple tag filters, the Actor builds the query for you.
Place name resolution Type 'Manhattan, New York' and the Actor finds the right map area automatically.
One row per place Every POI is flattened into a single record, no nested JSON to untangle.
Runs on the Apify platform Schedule it, get webhooks, and export to CSV, JSON, Excel, or XML without extra code.

How it compares

This Actor and the OpenStreetMap Listing Scraper both pull data from OpenStreetMap, but this one focuses on POI extraction by category and custom tag filters, while the other is built for search result listings.

Feature ParseForge OpenStreetMap Listing Scraper πŸ—ΊοΈ
Search by place name Yes Not listed
Search by coordinate and radius Yes Not listed
Ready made POI categories Yes Not listed
Custom OSM tag filters Yes Not listed
Flat row output Yes Not listed
Address and coordinates Yes Yes

Configure the run

Drive the Actor from a place name or a coordinate plus radius, then narrow the results with ready made categories or raw OpenStreetMap tag filters. Only matching places reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
 "place": "Berlin, Germany",
 "radiusMeters": 1500,
 "categories": [
 "restaurant"
 ],
 "maxItems": 10
}

A larger pull:

{
 "place": "Berlin, Germany",
 "radiusMeters": 1500,
 "categories": [
 "restaurant"
 ],
 "maxItems": 200
}

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 POI Scraper.
  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 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/overpass-osm-poi-scraper"

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

Troubleshooting

Why am I getting no results?

Check that your place name is spelled correctly and that the categories or custom filters match real OpenStreetMap tags. Try a broader category or remove custom filters to see if any places exist in that area.

The run takes a long time.

Large areas with many POIs can take a while. Reduce the radius, choose fewer categories, or lower the maximum places to speed it up.

I get an error about the place name.

The geocoder may not recognize the name. Try a more specific name, like 'Berlin, Germany' instead of 'Berlin', or switch to latitude and longitude.

Some places are missing from the results.

OpenStreetMap data is community maintained, so some places may not be tagged. Check the area on openstreetmap.org to see if the POI exists there. You can also add custom filters to catch more tags.

Can I get more than 1,000,000 places?

The maximum is 1,000,000 per run. If you need more, split your search into smaller areas or categories and run the Actor multiple times.

FAQ

Question Answer
Do I need an OpenStreetMap account or API key? No. The Actor queries the public Overpass API directly, so you can run it with an Apify account.
How do I search around a specific coordinate? Leave the Place field empty, then set Latitude, Longitude, and Radius in meters. The Actor will search that circle.
What is the difference between Categories and Custom OSM filters? Categories are ready made presets like 'restaurant' or 'school'. Custom filters let you type raw OpenStreetMap tag queries like 'amenity=cinema' or 'shop=bicycle'. Both are combined in the same run.
Can I scrape more than one category at once? Yes. Select multiple categories in the list, and add custom filters if you need even more. The Actor returns all matching places.
How many places can I get per run? You set the Maximum places limit, up to 1,000,000 per run. The Actor stops once it reaches that number.
What does the output look like? Each place is one flat row with fields like name, address, latitude, longitude, and category. You can export to CSV, JSON, Excel, or XML.
Does this work for any country? Yes, OpenStreetMap has global coverage. Type any city or neighborhood name, or use coordinates for remote areas.
Can I schedule this to run regularly? Yes, on the Apify platform you can schedule the Actor to run daily, weekly, or on any cron schedule, and get notified when it finishes.
What if a place name is ambiguous? The Actor uses OpenStreetMap's Nominatim geocoder to resolve the name. If the result is not what you expected, try a more specific name or use coordinates instead.
Is there a rate limit? The Actor respects the Overpass API's fair use policy. For very large areas, it may take longer, but you can raise the maximum places and let it run.

πŸ†˜ 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.

What input does the OpenStreetMap POI Scraper accept?

FieldTypeWhat it doesDefault
place string City, neighborhood, or area to search, for example 'Berlin, Germany' or 'Manhattan, New York'. Resolved to a map area automatically. Leave empty to search around a coordinate instead. Berlin, Germany
latitude string Center latitude when no place is set, for example 52.5174. Used together with longitude and radius. not set
longitude string Center longitude when no place is set, for example 13.3951. Used together with latitude and radius. not set
radiusMeters integer Search radius around the coordinate, in meters. Only used when searching around a coordinate. 1500
categories array Types of place to collect. Pick one or more. ["restaurant"]
customFilters array Raw OpenStreetMap tag filters, one per line, for example 'amenity=cinema', 'shop=bicycle', or 'office' to match any office. Combined with the categories above. not set
maxItems integer How many places to collect per run. 10

How much does the OpenStreetMap POI Scraper cost?

from $3.00 per 1,000 results

Charged forWhat it isPrice each
result Single result in the default dataset. $0.003 to $0.004

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

How do I call the OpenStreetMap POI Scraper API?

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST Β· run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~overpass-osm-poi-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "place": "Berlin, Germany",
    "categories": [
      "restaurant"
    ],
    "maxItems": 3
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

input.json
{
  "place": "Berlin, Germany",
  "categories": [
    "restaurant"
  ],
  "maxItems": 3
}

What do users say about the OpenStreetMap POI Scraper?

No reviews yet. Be the first.

How do I report an issue with the OpenStreetMap POI Scraper?

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

What related scrapers can I use?

Run OpenStreetMap POI Scraper on Apify All scrapers