OpenStreetMap POI Scraper avatar

OpenStreetMap POI Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
OpenStreetMap POI Scraper

OpenStreetMap POI Scraper

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.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

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 itWhat they scrape OpenStreetMap for
Market researchersWhich businesses exist in a target city or district
Real estate analystsWhat amenities are within walking distance of a property
Local marketersWhich shops and services to contact for partnerships
GIS specialistsA clean POI dataset to merge into their own maps
App developersSeed 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 neededPick categories from a list or paste simple tag filters, the Actor builds the query for you.
Place name resolutionType 'Manhattan, New York' and the Actor finds the right map area automatically.
One row per placeEvery POI is flattened into a single record, no nested JSON to untangle.
Runs on the Apify platformSchedule 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.

FeatureParseForgeOpenStreetMap Listing Scraper πŸ—ΊοΈ
Search by place nameYesNot listed
Search by coordinate and radiusYesNot listed
Ready made POI categoriesYesNot listed
Custom OSM tag filtersYesNot listed
Flat row outputYesNot listed
Address and coordinatesYesYes

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
}

Pricing

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

Results collectedApproximate cost
100 results$0.40
1,000 results$4.00
10,000 results$40.00

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 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

QuestionAnswer
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.

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.