OpenStreetMap Places & Business Finder
Pricing
$0.30 / 1,000 places
OpenStreetMap Places & Business Finder
OpenStreetMap places and business finder using Overpass. Export mapped names, categories, coordinates, addresses and contact fields as JSON where supplied, with attribution.
Pricing
$0.30 / 1,000 places
Rating
0.0
(0)
Developer
Grit
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
8 days ago
Last modified
Categories
Share
OpenStreetMap places scraper returns mapped businesses and other places from the Overpass API. OpenStreetMap places API results include names, categories, coordinates, addresses, contact details, and attribution when the source provides them.
Input example
{"bbox": "52.515,13.385,52.522,13.4","tags": ["amenity=restaurant"],"maxItems": 15}
The input keys and allowed values follow .actor/input_schema.json.
Output fields
| Field | Type | Example or excerpt from sample |
|---|---|---|
attribution | string | "© OpenStreetMap contributors" |
attribution_url | string | "https://www.openstreetmap.org/copyright" |
license | string | "ODbL-1.0" |
license_url | string | "https://opendatacommons.org/licenses/odbl/1-0/" |
source | string | "OpenStreetMap / Overpass API" |
status | string | "ok" |
name | string | "Bocca di Bacco" |
category | string | "amenity=restaurant" |
category_key | string | "amenity" |
category_value | string | "restaurant" |
address | string or null | "167;168, Friedrichstraße, 10117, Berlin, DE" |
lat | number | 52.5151119 |
lon | number | 13.3889084 |
coordinate_source | string | "node" |
osm_type | string | "node" |
osm_id | integer | 86001794 |
osm_url | string | "https://www.openstreetmap.org/node/86001794" |
opening_hours | string or null | "Mo-Sa 12:00-24:00" |
query_city | string or null | null |
retrieved_at | string | "2026-10-05T13:47:20.558187+00:00" |
errors | array | [] |
house_number | string or null | "167;168" |
street | string or null | "Friedrichstraße" |
place | string or null | null |
postcode | string or null | "10117" |
city | string or null | "Berlin" |
suburb | string or null | "Mitte" |
district | string or null | null |
state | string or null | null |
country | string or null | "DE" |
phone | string or null | "+49 30 20672828" |
website | string or null | "http://www.boccadibacco.de/" |
email | string or null | "info@boccadibacco.de" |
Output example
Trimmed from sample_output.json; omitted fields remain available in the dataset.
{"attribution": "© OpenStreetMap contributors","attribution_url": "https://www.openstreetmap.org/copyright","license": "ODbL-1.0","license_url": "https://opendatacommons.org/licenses/odbl/1-0/","source": "OpenStreetMap / Overpass API","status": "ok","name": "Bocca di Bacco"}
Attribution and license
Data: © OpenStreetMap contributors, available under the Open Database License 1.0. Each result and diagnostic row carries attribution and license links. Preserve these fields and display contributor credit when using or sharing results. Derived databases may have share-alike obligations; consult the OpenStreetMap copyright and license guidance before redistributing data. Actor service charges do not change the data license.
Limits and responsible use
maxItemsdefaults to 100 and accepts 1–10,000. It caps all dataset rows, including errors, and is sent as an Overpass output limit. Reaching the cap does not prove a complete area export; there is no pagination or relevance ranking.- Bounding-box order is south,west,north,east. Coordinates must be finite and valid; each axis has a maximum span of 2 degrees. Antimeridian crossing is unsupported. Broad area IDs or expensive filters can still exceed server resources even with a small output cap.
- Concurrency is fixed at 1. The next request waits at least
minDelaySeconds(default 10, minimum 5) after the previous request completes. One bbox/area query is sent; city lookup adds one preceding query. Up to three attempts use exponential backoff, at least 15 seconds andRetry-After. A cooldown exceeding 120 seconds ends the run for a later retry. - The run uses one endpoint, without redirect following, proxy rotation, failover to public mirrors or tiling. The default is
https://overpass-api.de/api/interpreter;overpassUrlsupports your supplied HTTP/HTTPS instance and rejects embedded credentials, query parameters and fragments. - The default public endpoint is for occasional small runs. For recurring, production or many-user use, supply and operate your own Overpass endpoint. Per-run limits do not coordinate traffic across separate runs; schedule those conservatively. Follow the Overpass usage policy, including its guidance against using public instances as an application's sustained backend. Do not assemble planet-scale exports from boxes.
- A response download is capped at 32 MiB. Server timeout is 10–120 seconds (default 60), with a 128 MiB declared server memory bound. These bound an individual query, not total source coverage. A runtime-error remark or invalid response is treated as incomplete, not as successful places.
- Malformed objects produce uncharged error rows; other valid objects continue. A failed source query produces an attributed error row and fails the run so automation can distinguish failure from a genuinely empty result.
- OSM coverage varies. Missing phone/email/opening hours remain missing; POIs can be outdated, unnamed or repeated as different OSM objects. A matched amenity tag does not necessarily represent a business.
FAQ
What are the output limits? maxItems caps places and diagnostics. Coverage depends on mapped features and Overpass availability.
Do I need a proxy or login? Public Overpass requests need no login or proxy. Use an endpoint you are permitted to query.
How is this priced? Proposed pay per event: $0.0003 for each unique place row. Diagnostics and duplicates are uncharged. These are proposals in PRICING.md; the owner must configure Store billing.
How are rate limits handled? The code uses one concurrent Overpass request and minDelaySeconds between attempts; throttled responses use backoff and Retry-After.
How fresh is the data? OpenStreetMap data is community maintained. retrieved_at marks collection time; names, contact details, and opening hours may be missing or outdated. Retain the OSM attribution and follow the ODbL terms when reusing data.
Use with AI agents / MCP
After the actor is published, connect your agent to the Apify MCP server with an Apify API token. Use call-actor with the published actor identifier and the JSON input shown above. Read the returned dataset with get-dataset-items; the run response itself contains status and storage IDs, not the result rows. Alternatively, use the Apify API to start a run and read its default dataset. Keep the actor input bounded with maxItems, and inspect source links and any error fields before using results in an answer.