OpenStreetMap Places API — Businesses & POIs by Area avatar

OpenStreetMap Places API — Businesses & POIs by Area

Pricing

from $0.30 / 1,000 places

Go to Apify Store
OpenStreetMap Places API — Businesses & POIs by Area

OpenStreetMap Places API — Businesses & POIs by Area

Businesses and points of interest from OpenStreetMap by category and area: cafés in a city, dentists near a point, hotels in a box. Name, address, coordinates, website, phone, opening hours, brand, cuisine, wheelchair access and raw tags. No API key, from $0.50 per 1,000 places.

Pricing

from $0.30 / 1,000 places

Rating

0.0

(0)

Developer

Insight Solutions

Insight Solutions

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

Share

A category and a place in, one row per business or point of interest out — from OpenStreetMap, with no API key. "Cafés in Berlin", "bicycle shops in Cambridge", "pharmacies in this bounding box", "dentists within 2 km of 52.52,13.40".

Every row carries the name, the category, the address, coordinates, website, phone, opening hours, brand, cuisine, wheelchair access, the OSM link and — if you want them — the raw OSM tags. Areas come from a place name (looked up once on Nominatim), a bounding box, or a point and a radius. The places come from the public Overpass API, one polite query at a time.

No login. No browser. No API key of anyone's. Data © OpenStreetMap contributors, available under the Open Database License (ODbL) — every row says so.

At a glance

Input — this is the Store prefill; paste it and run:

{ "categories": ["amenity=cafe"], "areas": [], "bboxes": ["52.50,13.38,52.52,13.42"], "points": [],
"radiusMeters": 2000, "useAreaBoundary": true, "requireName": true, "keywords": [], "maxPlaces": 100,
"reverseGeocode": false, "includeRawTags": true, "maxRunSecs": 240,
"proxyConfiguration": { "useApifyProxy": true } }

That is one Overpass query and 100 named cafés in central Berlin, in a few seconds. Put "Berlin, Germany" in areas instead of the box for the whole city.

Output — one place row per business or point of interest. The fields you will use most are name, category, address, phone, website, openingHours, lat, lon and osmUrl (full list under Output reference). Each area searched adds one free area row, and anything that could not be read comes back as a free diagnostic row (ok: false, errorType, error) instead of a charge.

Price — $0.50 per 1,000 places (+ $0.001 per run); areas, diagnostics and empty runs free; no API key, no browser, limited permissions, works over the Apify MCP server (mcp.apify.com) and with x402 agentic payments.

From code — client.actor("insight.solutions/osm-places-api").call(run_input={…}) with apify-client, or POST https://api.apify.com/v2/acts/insight.solutions~osm-places-api/run-sync-get-dataset-items.


What you get

One real row from the prefill's box, run with "maxPlaces": 0 (the prefill's cap of 100 stops just before it) — a café mapped as a building outline, so its coordinates are the building's centre (abridged; tags shortened):

{
"ok": true,
"rowType": "place",
"input": "amenity=cafe in 52.50,13.38,52.52,13.42",
"osmType": "way",
"osmId": 113084569,
"osmUrl": "https://www.openstreetmap.org/way/113084569",
"name": "Café am Engelbecken",
"category": "amenity=cafe",
"categoryLabel": "A generally informal place with sit-down facilities selling beverages and light meals and/or snacks.",
"lat": 52.5062646,
"lon": 13.4186304,
"street": "Michaelkirchplatz",
"houseNumber": "25",
"postcode": "10179",
"city": "Berlin",
"address": "Michaelkirchplatz 25, 10179 Berlin",
"website": "https://www.cafe-am-engelbecken.de/",
"phone": "+49 157 75431795",
"openingHours": "Mo-Su 10:00-24:00",
"wheelchair": "yes",
"outdoorSeating": "yes",
"internetAccess": "yes",
"tags": { "amenity": "cafe", "name": "Café am Engelbecken", "website": "http://www.cafe-am-engelbecken.de", "…": "…" },
"areaName": "52.50,13.38,52.52,13.42",
"rank": 135,
"source": "openstreetmap",
"sourceUrl": "https://overpass-api.de/api/interpreter?data=%5Bout%3Ajson%5D…",
"attribution": "© OpenStreetMap contributors, ODbL"
}

A chain outlet carries its brand too — the Starbucks in the same box comes back with "brand": "Starbucks", "brandWikidata": "Q37158" and "openingHours": "Mo-Fr 07:00-21:00; Sa 08:00-21:00; Su 09:00-19:30".

sourceUrl is the exact Overpass query the row came from, as a link: open it and you see the raw response.

Quick start

Cafés in a city — the name is looked up once and searched inside the city's exact boundary:

{ "categories": ["cafe"], "areas": ["Berlin, Germany"], "maxPlaces": 500 }

Bicycle shops inside a boundary, two categories at once:

{ "categories": ["shop=bicycle", "amenity=bicycle_rental"], "areas": ["Cambridge, UK"] }

Dentists around a point, nearest first, with distanceMeters:

{ "categories": ["dentist"], "points": ["52.52,13.40"], "radiusMeters": 2000 }

dentist is a bare name that both amenity and healthcare use, so both are searched in one union query.

Every hotel in a bounding box, to CSV — maxPlaces: 0 means no cap:

{ "categories": ["tourism=hotel"], "bboxes": ["48.80,2.25,48.91,2.42"], "maxPlaces": 0, "includeRawTags": false }

then download the dataset as CSV (Storage → Export, or …/datasets/{id}/items?format=csv&clean=true). Turning includeRawTags off keeps the CSV to the named columns.

Only vegan places, filtered on any tag:

{ "categories": ["cafe", "restaurant"], "areas": ["Kreuzberg, Berlin"], "keywords": ["vegan"] }

Category names

Write a category as an OSM tag, key=value (amenity=cafe), as key=* for every value of a key (craft=*), or as a bare name from the table below (cafe, bicycle, hotel, fitness centre). A bare name that more than one key uses — dentist, pharmacy, tailor — searches all of them. A bare key name (office, tourism) means every value of that key. Anything else comes back as a free invalid-input row telling you to write it as key=value — any OSM tag works in that form, including ones not listed here.

amenity and shop are the 100 most-used values of each as published by taginfo on 2026-09-30, with taginfo's own description (bar and pub have none there). The other five keys are hand-written from the OSM wiki.

amenity (100 values, taginfo, top 100 by use)

ValueDescription
parkingA place for parking cars.
parking_spaceA single parking space on a parking lot.
benchA place for people to sit, allowing room for one or more people.
place_of_worshipA place where religious services are conducted.
restaurantA restaurant sells full sit-down meals with servers, and may sell alcohol.
schoolA primary or secondary school (pupils typically aged 6 to 18).
waste_basketA single small container for depositing garbage that is easily accessible for pedestrians.
bicycle_parkingA parking space designed for bicycles.
shelterA small structure for protection against bad weather conditions
fast_foodA place which offers self-service and take-away food.
cafeA generally informal place with sit-down facilities selling beverages and light meals and/or snacks.
recyclingA container or centre that accepts waste material for reuse or recycling.

Also: fuel, toilets, pharmacy, post_box, bank, vending_machine, drinking_water, kindergarten, waste_disposal, hunting_stand, parking_entrance, bar, atm, community_centre, clinic, post_office, hospital, doctors, charging_station, fountain, pub, social_facility, townhall, police, dentist, grave_yard, fire_station, car_wash, library, parcel_locker, marketplace, bicycle_rental, childcare, telephone, college, bus_station, ice_cream, veterinary, university, theatre, taxi, public_bookcase, motorcycle_parking, bbq, letter_box, water_point, loading_dock, grit_bin, shower, ferry_terminal, events_venue, clock, driving_school, public_building, car_rental, courthouse, cinema, watering_place, arts_centre, trolley_bay, nightclub, bicycle_repair_station, bureau_de_change, lounger, studio, food_court, monastery, internet_cafe, prison, ticket_validator, social_centre, music_school, payment_terminal, vehicle_inspection, compressed_air, animal_breeding, public_bath, prep_school, car_sharing, weighbridge, lavoir, nursing_home, sanitary_dump_station, mobile_money_agent, language_school, biergarten, dojo, vacuum_cleaner.

shop (100 values, taginfo, top 100 by use)

ValueDescription
convenienceA small local shop carrying a variety of everyday products, such as packaged food and hygiene products.
supermarketA large shop selling groceries, fresh produce, and other goods.
clothesA shop which primarily sells clothing
hairdresserA hairdressers or barbers shop, where hair is cut
car_repairA business where cars are repaired.
bakeryA shop selling bread
yesA shop of unspecified type or an indicator that a feature such as a fuel station has a shop.
beautyA non-hairdresser beauty shop, spa, nail salon, etc.
carA place that primarily sells cars (automobiles)
hardwareShop selling primarily metal fasteners and tools, sometimes also other workshop and homeware products.
butcherA shop selling meat or meat products.
kioskA small shop on the pavement that sells magazines, tobacco, newspapers, sweets and stamps.

Also: mobile_phone, furniture, car_parts, alcohol, variety_store, florist, optician, electronics, jewelry, outpost, shoes, vacant, mall, gift, doityourself, greengrocer, chemist, laundry, books, bicycle, department_store, pet, travel_agency, stationery, sports, confectionery, tyres, storage_rental, tobacco, cosmetics, trade, massage, tailor, computer, funeral_directors, copyshop, pastry, motorcycle, dry_cleaning, farm, garden_centre, beverages, newsagent, general, ticket, interior_decoration, deli, houseware, toys, seafood, wine, tattoo, wholesale, paint, second_hand, pawnbroker, medical_supply, charity, photo, bed, kitchen, bookmaker, art, lottery, agrarian, outdoor, antiques, e-cigarette, fabric, coffee, perfumery, gas, motorcycle_repair, hearing_aids, appliance, craft, electrical, telecommunication, money_lender, pet_grooming, tea, bag, dairy, baby_goods, musical_instrument, rental, fashion_accessories, cannabis.

tourism (20 values, hand-written from the OSM wiki)

ValueDescription
hotelAn establishment providing accommodation with en-suite rooms and services.
guest_houseA small accommodation such as a bed and breakfast or guest house.
hostelCheap accommodation with shared bedrooms.
motelA roadside hotel with parking directly outside each room.
apartmentA furnished apartment or flat rented for short stays.
chaletA holiday cottage or hut rented as a whole.
camp_siteAn area where people can camp overnight using tents or vehicles.
caravan_siteAn area where people can stay overnight in caravans or motorhomes.
alpine_hutA mountain hut, usually staffed, providing shelter and meals.
wilderness_hutAn unstaffed hut in a remote area, free or cheap to use.
attractionA generic tourist attraction.
museumAn institution that displays collections of historical, cultural or scientific objects.

Also: gallery, artwork, viewpoint, information, picnic_site, theme_park, zoo, aquarium.

leisure (24 values, hand-written from the OSM wiki)

ValueDescription
fitness_centreA gym or fitness centre with exercise equipment.
sports_centreA facility where a range of sports take place.
sports_hallA large indoor hall for sports.
swimming_poolA swimming pool.
water_parkAn amusement park with water slides and pools.
stadiumA major sports arena with substantial tiered seating.
pitchAn area designed for playing a particular sport.
trackA track for running, cycling or other non-motorised racing.
golf_courseThe course of a golf club.
miniature_golfA miniature golf course.
ice_rinkA place where people skate on ice.
bowling_alleyA place for ten-pin or nine-pin bowling.

Also: marina, park, playground, garden, nature_reserve, dog_park, sauna, dance, escape_game, amusement_arcade, horse_riding, fitness_station.

office (24 values, hand-written from the OSM wiki)

ValueDescription
companyAn office of a private company.
governmentAn office of a government agency or authority.
estate_agentAn office of a real estate agent.
insuranceAn office of an insurance company or broker.
lawyerAn office of a lawyer or law firm.
accountantAn office of an accountant.
tax_advisorAn office of a tax advisor.
notaryAn office of a notary.
architectAn office of an architect or architecture firm.
itAn office of an IT specialist or IT company.
consultingAn office of a consulting firm.
financialAn office of a financial services company.

Also: advertising_agency, employment_agency, travel_agent, telecommunication, logistics, coworking, ngo, association, educational_institution, research, political_party, religion.

healthcare (24 values, hand-written from the OSM wiki)

ValueDescription
doctorA doctor's practice.
dentistA dentist's practice.
pharmacyA pharmacy: a shop where medicines are dispensed.
hospitalA hospital providing in-patient medical treatment.
clinicA medical centre with more than one doctor, usually without overnight stays.
physiotherapistA physiotherapy practice.
psychotherapistA psychotherapy practice.
optometristAn optometrist or eye-care practice.
audiologistA hearing-care practice.
podiatristA podiatry or foot-care practice.
speech_therapistA speech and language therapy practice.
occupational_therapistAn occupational therapy practice.

Also: alternative, laboratory, sample_collection, rehabilitation, counselling, midwife, nurse, dialysis, blood_donation, vaccination_centre, hospice, birthing_centre.

craft (24 values, hand-written from the OSM wiki)

ValueDescription
carpenterA workplace of a carpenter who works with timber.
electricianA workplace or office of an electrician.
plumberA workplace or office of a plumber.
hvacA heating, ventilation and air-conditioning installer.
painterA workplace of a house or decorative painter.
rooferA workplace of a roofer.
glazieryA workplace of a glazier who cuts and fits glass.
locksmithA workplace of a locksmith.
key_cutterA place where keys are cut.
metal_constructionA workplace for metal construction and fabrication.
window_constructionA workplace for making and fitting windows.
stonemasonA workplace of a stonemason.

Also: gardener, photographer, shoemaker, tailor, upholsterer, jeweller, confectionery, brewery, winery, beekeeper, handicraft, blacksmith.

Input

FieldTypeDefaultWhat it does
categoriesstring[]["amenity=cafe"]OSM key=value pairs, key=*, or bare names from the table above. Each category is searched in each area separately.
areasstring[][]Place names — Berlin, Germany, Cambridge, UK, Kreuzberg, Berlin. One Nominatim lookup each.
bboxesstring[][]south,west,north,east in decimal degrees.
pointsstring[][]lat,lon, searched within radiusMeters.
radiusMetersinteger2000For points. 50–20,000.
useAreaBoundarybooleantrueFor a named area that is an administrative boundary, search inside the exact boundary rather than its bounding box.
requireNamebooleantrueSkip unnamed elements (benches, parking spaces, anonymous vending machines).
keywordsstring[][]Keep only places whose name, brand, cuisine or any tag (key=value) contains one of these words, case-insensitive.
maxPlacesinteger500Per category and area. 0 = no cap (up to 5,000 per Overpass query, within maxRunSecs).
reverseGeocodebooleanfalseFor places with no addr:* tag at all, ask Nominatim for the nearest address. One request a second, at most 200 a run.
includeRawTagsbooleantrueAdd the place's OSM tags as a tags object.
maxRunSecsinteger24030–3,600. No new query is started after this.
proxyConfigurationobject{ "useApifyProxy": true }Apify datacenter proxy by default; both services answered through it in testing.

At least one valid category and one of areas, bboxes or points are needed; a run with neither fails straight away without sending a request, and costs nothing. There is no concurrency setting: this Actor keeps exactly one Overpass query in flight, always (see Fair use).

Output reference

Every row has the same columns; the ones that do not apply are null.

Envelope (every row): ok, rowType (place, area or diagnostic), input (the category and area, as amenity=cafe in Berlin, Germany), error, errorType, scrapedAt, source (openstreetmap), sourceUrl, attribution (© OpenStreetMap contributors, ODbL).

place rows (paid):

ColumnFromNotes
osmType, osmId, osmUrlthe elementnode, way or relation; the id is permanent.
name, brand, brandWikidataname, brand, brand:wikidata
category, categoryKey, categoryValue, categoryLabelthe tag it was found byamenity=cafe; the label is taginfo's description. For key=* the element's own value.
cuisinecuisineAn array, split on ;.
lat, lonthe node, or the centre of a way or relationWGS84.
street, houseNumber, postcode, city, suburbaddr:*
countryaddr:country, else the named area's countryISO 3166-1 alpha-2.
addressthe above, joined in local orderOr addr:full, or the reverse-geocoded address.
websitewebsite → contact:website → brand:websiteNormalised to an https:// URL; the tag's own spelling stays in tags.
phonephone → contact:phoneThe first number when several are tagged.
emailemail → contact:emailOnly on a named business (see Personal data).
openingHoursopening_hoursExactly as tagged, in OSM's opening-hours syntax.
wheelchair, outdoorSeating, takeaway, delivery, internetAccess, levelthe matching tagsValues as tagged (yes, no, limited, wlan…).
checkDatecheck_dateWhen a mapper last confirmed the place.
wikidata, wikipediawikidata, wikipediaThe Wikipedia tag as an article URL.
tagsevery tagMinus the personal ones; null when includeRawTags is off.
areaName, areaOsmIdthe area searchedareaOsmId for named areas (62422 for Berlin).
distanceMeterspoints modeStraight-line metres from your point.
rankPosition within its category and area: OSM id order for areas and boxes, nearest first for points.

area rows (free, one per area): areaName, displayName, osmType, osmId, osmUrl, boundingBox ({ south, west, north, east }), areaId (the Overpass area id, 3600000000 + the relation id), country, addressType, lat/lon (Nominatim's centre for a named area, the point itself for a points search), tiles (Overpass queries it took, across all categories) and placeCount.

diagnostic rows (free):

errorTypeMeaning
invalid-inputA category, box, point or area that could not be used, and why.
area-not-foundNominatim had no match for the name.
no-resultsThe query worked and nothing matched — or everything it found was dropped by requireName, keywords, or had already been returned.
overpass-busyBoth public Overpass instances answered 429 or 5xx (see Fair use).
overpass-timeoutPart of an area could not be finished within Overpass's 60 s limit even after halving it.
rate-limited, blockedNominatim answered 429 or 403, or Overpass answered 403 twice.
http, timeoutAny other HTTP status, or no answer in time.
deadlinemaxRunSecs ran out; what was delivered is kept.
budgetYour maximum total charge was reached; what was delivered is kept.
upstream-formatA response in a shape this Actor does not recognise, or Overpass refusing the query or the User-Agent.
actor-errorThe Actor itself failed; the run is marked FAILED.

The dataset has three views: Places (name, category, city, address, phone, website, openingHours, lat, lon, osmUrl), Areas and Diagnostics.

How areas are resolved

  • A name goes to OpenStreetMap's Nominatim geocoder once: search?q=<name>&format=jsonv2&limit=1&addressdetails=1. Its first hit gives a bounding box and, when it is an administrative boundary (an OSM relation, as cities and districts are), the boundary itself. With useAreaBoundary on, the search is area(3600000000 + relation id) — exactly the city, not the edge of the next one. Otherwise, or when the hit is not a boundary, its bounding box is used. Nominatim is asked once per distinct name per run however many categories you list, and never more than one request per second, as its usage policy requires: https://operations.osmfoundation.org/policies/nominatim/. A 429 or 403 from Nominatim is never retried and stops every further Nominatim request in that run.
  • A bounding box is used as given.
  • A point is searched with Overpass's around filter, and the results sorted nearest first.

A name Nominatim cannot find is a free area-not-found row; the other areas still run. Adding the country usually fixes it ("Cambridge, UK", not "Cambridge").

Fair use

Overpass and Nominatim are run by volunteers and the OSM Foundation on donated hardware. This Actor treats them accordingly:

  • One identifying User-Agent on every request: insight-solutions-osm-places-api/0.1 (+https://apify.com/insight.solutions). Overpass refuses generic ones — in testing it answered a curl and a browser User-Agent with HTTP 406 — and both services' policies ask for it.
  • One Overpass query in flight for the whole run, a short pause between queries, and [timeout:60] on every query.
  • Small queries. A box larger than 0.5° × 0.5° is split into tiles of at most 0.25° a side, queried one after another; more than 64 tiles (about 2° × 2°) is refused — name the area instead. Every query is capped with out … n: at what the run still needs, or at 5,000 when keywords or a points search mean the filtering and sorting happen on our side.
  • Busy servers are left alone. A 429 or 5xx waits 10 seconds and tries the other public instance (overpass-api.de ↔ lz4.overpass-api.de) from a fresh proxy exit, then waits 20 and 30 seconds for two more alternations made directly, without the proxy — four attempts spread over about a minute — and then gives up on that query with a free overpass-busy row. Three of those in a row and the run stops querying altogether.
  • Oversized queries are halved. A query that hits the 60-second limit is halved and retried, down to an eighth of the original, and a category that times out six times in one area stops there with one overpass-timeout row.
  • Reverse geocoding is opt-in, one request a second, at most 200 a run, and only for places with no address at all.
  • The Store's daily test run never calls Nominatim — the prefill is a bounding box.

Attribution

The data is © OpenStreetMap contributors and is available under the Open Database License (ODbL): https://www.openstreetmap.org/copyright. Every row carries "attribution": "© OpenStreetMap contributors, ODbL", and a successful run's status message ends with it. If you publish or redistribute the data — a map, a directory, a report — you must credit OpenStreetMap contributors and keep the ODbL's share-alike terms for any database you derive from it.

What is and isn't in OSM

OpenStreetMap is mapped by volunteers, so coverage varies: dense and current in most European and many North American cities, thinner elsewhere, and a small village café may simply not be mapped. Measured on the 137 named cafés of the prefill box (central Berlin, 2026-09-30):

FieldFilled
openingHours64%
address64%
website39%
phone26%
email13%
wheelchair68%
outdoorSeating69%
cuisine40%
brand16% (chains only)
  • There are no reviews, ratings, photos or price levels — OSM does not collect them.
  • Opening hours are as tagged, in OSM's own syntax (
    Mo-Fr 07:00-21:00; Sa 08:00-21:00
    ); this Actor does not evaluate them into "open now". checkDate, where present, says when someone last confirmed the place.
  • A place closed since it was last mapped is still there until a mapper removes it.

Personal data

OSM describes places, but its free-form tags occasionally name a person. This Actor returns organisation-level facts only:

  • contact:person, contact:name, owner and contact:owner are never returned — not as a column and not in tags.
  • An operator that looks like a personal name (two or three capitalised words with no company marker such as GmbH, Ltd, Inc or e.V.) is removed from tags. The test errs on the side of removing: a company whose name looks like a person's is removed too.
  • email is returned only for a named business — an element with one of the seven category keys and a name — where it is the organisation's published mailbox; otherwise it is removed from tags as well.
  • A business phone is kept: it is the business's number.

What you are never charged for

  • The area row for each area searched.
  • Every diagnostic row: areas not found, categories with nothing mapped, busy or timed-out Overpass queries, rate limits, the time budget and the charge limit.
  • Places dropped by requireName or keywords — they are filtered before they are written.
  • A place already returned earlier in the same run, under another category, in a neighbouring tile or in an overlapping area.
  • Nominatim lookups and the addresses reverseGeocode fills in.
  • A run that returns no place at all: it finishes SUCCEEDED with a "0 results … Nothing was charged." status message, and the start fee is not billed either.

Pricing

EventFREEBRONZESILVERGOLD
Run started (once, only when a place is returned)$0.001$0.001$0.001$0.001
Place$0.0005$0.0005$0.0004$0.0003

That is $0.50 per 1,000 places on the FREE tier. The prefill costs $0.051; every café in central Berlin (about 1,400) costs 1,400 × $0.0005 + $0.001 = $0.701. Set a maximum total charge on the run and it stops querying when it gets there, keeping everything already delivered.

Use it from an AI agent, or from code

Over the Apify MCP server (mcp.apify.com) an agent can call it as insight.solutions/osm-places-api with the same JSON input. From Python:

# pip install apify-client
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("insight.solutions/osm-places-api").call(run_input={
"categories": ["amenity=cafe"],
"areas": ["Berlin, Germany"],
"maxPlaces": 200,
})
for place in client.dataset(run["defaultDatasetId"]).iterate_items():
if place["rowType"] == "place":
print(place["name"], place["address"], place["website"])

Or in one HTTP call: POST https://api.apify.com/v2/acts/insight.solutions~osm-places-api/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN> with the input as the JSON body.

FAQ

Do I need an OpenStreetMap or Overpass account or key? No. Both services are public; this Actor identifies itself with its own User-Agent.

Why did "Cambridge" give me the wrong Cambridge? Nominatim returns its best match, and there are several. Add the country — Cambridge, UK or Cambridge, MA, USA — or pass a bounding box.

Why is address empty for some places? Because nobody has tagged an address on them in OSM. Turn on reverseGeocode to fill it from the nearest address Nominatim knows (slow by design: one a second, 200 a run).

Why is website https when the tag says http? The column is normalised so every value is a link you can open over TLS; the original is in tags.website.

How do I get more than 500 places? Raise maxPlaces, or set it to 0 for no cap. Large areas take more queries and more time; raise maxRunSecs too.

Can I search a whole country? By name, with useAreaBoundary on, it is one boundary query per category — which Overpass may not finish in 60 s for a common category; the Actor then halves the area a few times and tells you what it could not finish. A city or region at a time is faster and more reliable.

Is the same place ever charged twice? Not in one run. Across runs, yes — each run returns what is in OSM at the time.

What does categoryLabel say for bar? Nothing: taginfo publishes no description for it, and the Actor does not invent one.

Limitations

  • The upstream formats may change. Overpass, Nominatim and OSM's tagging conventions are maintained by volunteers; a changed response shape comes back as a free upstream-format row rather than bad data.
  • Coverage and freshness are OSM's, and vary by place and category.
  • Public Overpass instances are shared and sometimes busy; a busy run returns free diagnostics rather than retrying aggressively.
  • At most 5,000 places per Overpass query; a tile that would hold more is cut at that number.
  • Boxes across the 180th meridian are not supported; split them in two.
  • The personal-name check on operator is a heuristic and errs on the side of removing.
  • Opening hours are returned as tagged, not evaluated.
  • Nominatim resolves a name to its single best match; there is no disambiguation prompt.

Our other Actors

Every Insight Solutions Actor is pay-per-result with no browser, no login and no API key, and every one of them returns free diagnostic rows instead of billing for failures. Prices are per 1,000 results.

Video, audio & social

News, documents & the web

Business, finance & jobs

Apps & games