A free alternative to the Google Maps Places API

The Google Maps Places API gets the job done, but it comes with friction: you need an API key, you're capped by per-call quotas, and the bill grows with every lookup. Going the other way and scraping Google Maps directly isn't a real option either — it breaks Google's Terms of Service and runs straight into anti-bot defenses.

There's a cleaner path. OpenStreetMap is an open, community-maintained map of the world, and it already holds structured data for millions of points of interest — businesses, shops, services and landmarks. This article shows how to pull that POI data for any city with no API key, in a form that's legal to use and redistribute. It's a good fit if you need local-business / POI datasets for analysis, lead generation, or store-locator features; market research and location intelligence; or structured place data to feed AI / RAG pipelines — a clean alternative to "Google Maps scraper" tools.

What you get

Every place comes back as a structured row with the fields that are actually mapped in OpenStreetMap:

There are 115+ place categories to choose from — restaurant, cafe, bar, pub, fast_food, hotel, supermarket, pharmacy, bank, fuel, museum, and many more. On top of the raw fields, every row also includes a ready-to-use full_address, a map_url, the state, and branch, plus brand_wikidata and brand_logo for chain locations. Fields that aren't mapped come back as null (honest-null — no guessing), and same-place duplicates are merged, so a spot mapped twice as a node and a building becomes one richer row.

How to get it (no API key)

You run the dataquarry OpenStreetMap Places Scraper on Apify. It pulls from OpenStreetMap via Nominatim and Overpass — no API key, no account at Google. You can search by area (city/region), by radius around a point, or by bounding box, and filter by name with searchTerm (for example, find every "Starbucks"). Pick the categories you want via a categories array.

A minimal input looks like this:

{"area":"Berlin, Germany","categories":["restaurant","cafe"]}

You'll get rows like this:

name category full_address phone opening_hours map_url
Café Sonnenschein cafe Kastanienallee 12, 10435 Berlin, Germany +49 30 1234567 Mo-Fr 08:00-18:00; Sa 09:00-16:00 https://www.openstreetmap.org/node/123456789
Trattoria Bella restaurant Oranienstraße 45, 10969 Berlin, Germany +49 30 7654321 Tu-Su 12:00-23:00 https://www.openstreetmap.org/node/987654321

Run the OpenStreetMap Places Scraper on Apify →

Why OpenStreetMap (and not a Google Maps scraper)?

OpenStreetMap data is published under the ODbL, which means you can use and redistribute it with attribution to © OpenStreetMap contributors — no API key, no logins, and none of the anti-bot or Terms-of-Service headaches that come with scraping Google Maps. Unmapped fields stay null instead of being invented, so what you get is honest. Pricing is simple pay-per-result: $3 per 1,000 rows, with output available as CSV, JSON, or Excel.

FAQ

Is this really a free alternative to the Google Maps Places API?

For many use cases, yes — it returns local business / POI data (name, address, coordinates, contact, hours, category) from OpenStreetMap, with no API key and no per-call quota. It's open data, not Google's, so coverage differs by area.

Is the data legal to use and redistribute?

Yes — it comes from OpenStreetMap under the ODbL, redistributable with attribution to © OpenStreetMap contributors. No logins or Terms-of-Service violations.

How much does it cost?

Pay-per-result: $3 per 1,000 rows — you only pay for the rows you actually get.