{"openapi":"3.1.0","info":{"title":"Places API - Business Leads by City (Overture Maps)","version":"1.0.0","description":"Find businesses in any city or area by category from the open Overture Maps places dataset: name, category, address, coordinates, website, phone, role e-mail addresses and social links, best-scored first, duplicates removed. An optional second endpoint reads each business's own website for e-mails, phones and social profiles. No scraping of map sites, so no proxies, CAPTCHAs or blocking. Business fields only. Data: Overture Maps Foundation, CDLA-Permissive-2.0.\n\nAll endpoints accept GET (query string) or POST (JSON body). Errors use one shape: `{\"success\": false, \"error\": {\"code\", \"message\", \"retryable\"}}`. When a numeric `Retry-After` header is present, `error.retryAfterSeconds` is included.","contact":{"name":"TidyTools","url":"https://apify.com/tidytools"}},"servers":[{"url":"https://webcapture-api.yukailin.workers.dev","description":"Origin (reachable only through the marketplace gateway)"}],"tags":[{"name":"Places"}],"paths":{"/api/v1/places/search":{"get":{"operationId":"placesSearchGet","summary":"Find businesses in a city by category (Overture Maps) (GET)","description":"Businesses of a city or area straight from the open Overture Maps places dataset (CDLA-Permissive-2.0): name, category (and path), address, coordinates, website, phone numbers, role e-mail addresses (info@, contact@) and social links, best-scored first. No map site is scraped: no proxies, no CAPTCHAs, no blocking. Duplicates removed. Business fields only (no person names). Overture has no ratings, reviews or opening hours, and only about 1 in 5 places has an e-mail address: use `/places/enriched` to read each business's own website for contacts. The first search of a city takes 20-40 s while its data is prepared (answered with `504 timeout`, retry in about a minute); later searches of that city take under a second.","tags":["Places"],"parameters":[{"name":"location","schema":{"type":"string"},"description":"A city with its 2-letter country code (`Berlin, DE`, `Austin, US`; country names such as `Lisbon, Portugal` work too), or a bounding box `west,south,east,north` of up to 2 square degrees. Cities are cut out along their real boundary.","required":true,"example":"Berlin, DE","in":"query"},{"name":"limit","schema":{"type":"integer","default":10,"minimum":1,"maximum":25},"description":"Places per call.","required":false,"in":"query"},{"name":"category","schema":{"type":"string"},"description":"One or more Overture categories, comma-separated (up to 5): `restaurant`, `dental_clinic`, `real_estate_agent`, `hotel`, `attorney_or_law_firm`... Plain words (`dentist`, `lawyers`) and plurals work; a parent category (`food_and_drink`, `health_and_medical`) includes everything under it. Empty = all categories. When nothing matches, `hint` lists the categories that exist there.","required":false,"example":"dentist","in":"query"},{"name":"offset","schema":{"type":"integer","default":0,"minimum":0,"maximum":500},"description":"Skip this many places (paging, best-scored first).","required":false,"in":"query"},{"name":"minConfidence","schema":{"type":"number","default":0.85,"minimum":0.5,"maximum":1},"description":"Overture's confidence (0.5-1) that the place exists. Closed places are always removed.","required":false,"in":"query"},{"name":"requireWebsite","schema":{"type":"boolean","default":false},"description":"Only places with a website.","required":false,"in":"query"},{"name":"requirePhone","schema":{"type":"boolean","default":false},"description":"Only places with a phone number.","required":false,"in":"query"},{"name":"requireEmail","schema":{"type":"boolean","default":false},"description":"Only places with a role e-mail address (info@, contact@...) in the source data.","required":false,"in":"query"}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"location":{"type":"string","description":"The location you sent."},"resolvedTo":{"type":"string","nullable":true,"description":"What the location was resolved to (a city name, or the box you gave)."},"boundary":{"type":"string","nullable":true,"description":"`polygon` (the city's real boundary, from OpenStreetMap), `bounding box only` (built-in city table) or `bounding box`."},"categories":{"type":"array","items":{"type":"string"}},"release":{"type":"string","description":"Overture Maps release the data comes from."},"license":{"type":"string"},"attribution":{"type":"string","description":"Keep this attribution when you publish the data."},"count":{"type":"integer","description":"Places in this answer."},"available":{"type":"integer","description":"Places that match your filters in total (after duplicate removal): use `offset` to page."},"offset":{"type":"integer"},"hasMore":{"type":"boolean"},"duplicatesDropped":{"type":"integer","description":"Candidates removed as duplicates (same name and address, name and phone, name and spot, or website, postcode and name start)."},"cached":{"type":"boolean","description":"true when the city's data was already prepared (milliseconds); false on the first search of a city."},"places":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"category":{"type":"string"},"categoryPath":{"type":"array","items":{"type":"string"}},"website":{"type":"string"},"websiteHost":{"type":"string"},"phone":{"type":"string"},"phones":{"type":"array","items":{"type":"string"}},"emails":{"type":"array","items":{}},"emailType":{"type":"string"},"socials":{"type":"array","items":{}},"address":{"type":"string"},"city":{"type":"string"},"postcode":{"type":"string"},"region":{"type":"string"},"country":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"confidence":{"type":"integer"},"operatingStatus":{"type":"string"},"sourceDataset":{"type":"string"},"sourceUpdated":{"type":"string"},"location":{"type":"string"},"release":{"type":"string"},"license":{"type":"string"},"attribution":{"type":"string"},"enrichedEmails":{"type":"array","items":{}},"enrichedPhones":{"type":"array","items":{"type":"string"}},"enrichedSocials":{"type":"object","properties":{"instagram":{"type":"string"}}},"enrichment":{"type":"object","properties":{"mode":{"type":"string"},"placeId":{"type":"string"},"checkedAt":{"type":"string"},"status":{"type":"string"},"websiteReachable":{"type":"boolean"},"httpStatus":{"type":"integer"},"pagesRead":{"type":"integer"},"newEmails":{"type":"integer"},"sourceEmailKept":{"type":"boolean"},"emailPages":{"type":"object","properties":{}},"sharedWebsite":{"type":"boolean"},"note":{"type":"string"}}}}}},"enrichment":{"type":"object","description":"/places/enriched only: summary of the website reads (`websitesRead`, `found`, `unreachable`, `noWebsite`, `profileSite`, `withNewEmail`...).","additionalProperties":true},"hint":{"type":"string","description":"When nothing matched your category: the categories that exist in that area."}}},"example":{"success":true,"location":"Berlin, DE","resolvedTo":"Berlin, DE","boundary":"bounding box only","categories":["dentist"],"release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)","count":3,"available":1367,"offset":0,"hasMore":true,"duplicatesDropped":23,"cached":true,"places":[{"id":"606c9928-fcc1-4153-a793-01a83997673a","name":"Meindentist Praxis","category":"dental_clinic","categoryPath":["health_care","outpatient_care_facility","dental_clinic"],"website":"https://www.meindentist.de/","websiteHost":"meindentist.de","phone":"+493040505757","phones":["+493040505757"],"emails":[],"emailType":"role-only","socials":[],"address":"Kollwitzstraße 62","city":"Berlin","postcode":"10435","region":"BE","country":"DE","latitude":52.53575134277344,"longitude":13.417802810668945,"confidence":1,"operatingStatus":"open","sourceDataset":"BrightQuery","sourceUpdated":"2026-09-17T20:01:51.007Z","location":"Berlin, DE","release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)"},{"id":"f58b26c2-28de-4b9b-8e7c-b2dbdeb20980","name":"Lieblings-zahnarzt","category":"dental_clinic","categoryPath":["health_care","outpatient_care_facility","dental_clinic"],"website":"http://www.lieblings-zahnarzt.de/berlin-schoeneberg/berliner-mundart","websiteHost":"lieblings-zahnarzt.de","phone":"+493075002390","phones":["+493075002390"],"emails":[],"emailType":"role-only","socials":[],"address":"Hauptstraße 23","city":"Berlin","postcode":"10827","region":"BE","country":"DE","latitude":52.486000061035156,"longitude":13.355497360229492,"confidence":1,"operatingStatus":"open","sourceDataset":"BrightQuery","sourceUpdated":"2026-09-17T20:01:51.007Z","location":"Berlin, DE","release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)"},{"id":"3a7d80cb-6d59-4433-b222-c29cf37b16a2","name":"Zahnärzte Dres. Zimny Und Kollegen","category":"dental_clinic","categoryPath":["health_care","outpatient_care_facility","dental_clinic"],"website":"http://www.zahnarzt-zimny.de/","websiteHost":"zahnarzt-zimny.de","phone":"+493088920200","phones":["+493088920200"],"emails":[],"emailType":"role-only","socials":[],"address":"Uhlandstraße 53","city":"Berlin","postcode":"10719","region":"BE","country":"DE","latitude":52.49617004394531,"longitude":13.32380485534668,"confidence":1,"operatingStatus":"open","sourceDataset":"BrightQuery","sourceUpdated":"2026-09-17T20:01:51.007Z","location":"Berlin, DE","release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)"}]}}}},"400":{"description":"Invalid parameter (`invalid_request`) or a private/local target (`url_not_allowed`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"success":false,"error":{"code":"url_not_allowed","message":"private, local and reserved hosts are not allowed"}}}}},"404":{"description":"`location_not_found`: the city could not be located (check the spelling, add the 2-letter country code, or use a bounding box).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"success":false,"error":{"code":"location_not_found","message":"\"Zzyzx Qwerty, DE\" could not be located. Check the spelling or use a bounding box \"west,south,east,north\".","details":{"errorType":"location_not_found"}}}}}},"413":{"description":"Request body or target document too large (`too_large`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"`upstream_error`: the places database is busy preparing other cities; retry in a minute. `not_configured` while the service is not connected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"504":{"description":"`timeout`: the first search of a city takes longer while its data is prepared. The preparation continues in the background: retry in about a minute (popular cities are prepared in advance).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"placesSearch","summary":"Find businesses in a city by category (Overture Maps)","description":"Businesses of a city or area straight from the open Overture Maps places dataset (CDLA-Permissive-2.0): name, category (and path), address, coordinates, website, phone numbers, role e-mail addresses (info@, contact@) and social links, best-scored first. No map site is scraped: no proxies, no CAPTCHAs, no blocking. Duplicates removed. Business fields only (no person names). Overture has no ratings, reviews or opening hours, and only about 1 in 5 places has an e-mail address: use `/places/enriched` to read each business's own website for contacts. The first search of a city takes 20-40 s while its data is prepared (answered with `504 timeout`, retry in about a minute); later searches of that city take under a second.\n\nThe same parameters as the GET form, sent as a JSON body.","tags":["Places"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"location":{"type":"string","description":"A city with its 2-letter country code (`Berlin, DE`, `Austin, US`; country names such as `Lisbon, Portugal` work too), or a bounding box `west,south,east,north` of up to 2 square degrees. Cities are cut out along their real boundary."},"limit":{"type":"integer","default":10,"minimum":1,"maximum":25,"description":"Places per call."},"category":{"type":"string","description":"One or more Overture categories, comma-separated (up to 5): `restaurant`, `dental_clinic`, `real_estate_agent`, `hotel`, `attorney_or_law_firm`... Plain words (`dentist`, `lawyers`) and plurals work; a parent category (`food_and_drink`, `health_and_medical`) includes everything under it. Empty = all categories. When nothing matches, `hint` lists the categories that exist there."},"offset":{"type":"integer","default":0,"minimum":0,"maximum":500,"description":"Skip this many places (paging, best-scored first)."},"minConfidence":{"type":"number","default":0.85,"minimum":0.5,"maximum":1,"description":"Overture's confidence (0.5-1) that the place exists. Closed places are always removed."},"requireWebsite":{"type":"boolean","default":false,"description":"Only places with a website."},"requirePhone":{"type":"boolean","default":false,"description":"Only places with a phone number."},"requireEmail":{"type":"boolean","default":false,"description":"Only places with a role e-mail address (info@, contact@...) in the source data."}},"required":["location"]}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"location":{"type":"string","description":"The location you sent."},"resolvedTo":{"type":"string","nullable":true,"description":"What the location was resolved to (a city name, or the box you gave)."},"boundary":{"type":"string","nullable":true,"description":"`polygon` (the city's real boundary, from OpenStreetMap), `bounding box only` (built-in city table) or `bounding box`."},"categories":{"type":"array","items":{"type":"string"}},"release":{"type":"string","description":"Overture Maps release the data comes from."},"license":{"type":"string"},"attribution":{"type":"string","description":"Keep this attribution when you publish the data."},"count":{"type":"integer","description":"Places in this answer."},"available":{"type":"integer","description":"Places that match your filters in total (after duplicate removal): use `offset` to page."},"offset":{"type":"integer"},"hasMore":{"type":"boolean"},"duplicatesDropped":{"type":"integer","description":"Candidates removed as duplicates (same name and address, name and phone, name and spot, or website, postcode and name start)."},"cached":{"type":"boolean","description":"true when the city's data was already prepared (milliseconds); false on the first search of a city."},"places":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"category":{"type":"string"},"categoryPath":{"type":"array","items":{"type":"string"}},"website":{"type":"string"},"websiteHost":{"type":"string"},"phone":{"type":"string"},"phones":{"type":"array","items":{"type":"string"}},"emails":{"type":"array","items":{}},"emailType":{"type":"string"},"socials":{"type":"array","items":{}},"address":{"type":"string"},"city":{"type":"string"},"postcode":{"type":"string"},"region":{"type":"string"},"country":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"confidence":{"type":"integer"},"operatingStatus":{"type":"string"},"sourceDataset":{"type":"string"},"sourceUpdated":{"type":"string"},"location":{"type":"string"},"release":{"type":"string"},"license":{"type":"string"},"attribution":{"type":"string"},"enrichedEmails":{"type":"array","items":{}},"enrichedPhones":{"type":"array","items":{"type":"string"}},"enrichedSocials":{"type":"object","properties":{"instagram":{"type":"string"}}},"enrichment":{"type":"object","properties":{"mode":{"type":"string"},"placeId":{"type":"string"},"checkedAt":{"type":"string"},"status":{"type":"string"},"websiteReachable":{"type":"boolean"},"httpStatus":{"type":"integer"},"pagesRead":{"type":"integer"},"newEmails":{"type":"integer"},"sourceEmailKept":{"type":"boolean"},"emailPages":{"type":"object","properties":{}},"sharedWebsite":{"type":"boolean"},"note":{"type":"string"}}}}}},"enrichment":{"type":"object","description":"/places/enriched only: summary of the website reads (`websitesRead`, `found`, `unreachable`, `noWebsite`, `profileSite`, `withNewEmail`...).","additionalProperties":true},"hint":{"type":"string","description":"When nothing matched your category: the categories that exist in that area."}}},"example":{"success":true,"location":"Berlin, DE","resolvedTo":"Berlin, DE","boundary":"bounding box only","categories":["dentist"],"release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)","count":3,"available":1367,"offset":0,"hasMore":true,"duplicatesDropped":23,"cached":true,"places":[{"id":"606c9928-fcc1-4153-a793-01a83997673a","name":"Meindentist Praxis","category":"dental_clinic","categoryPath":["health_care","outpatient_care_facility","dental_clinic"],"website":"https://www.meindentist.de/","websiteHost":"meindentist.de","phone":"+493040505757","phones":["+493040505757"],"emails":[],"emailType":"role-only","socials":[],"address":"Kollwitzstraße 62","city":"Berlin","postcode":"10435","region":"BE","country":"DE","latitude":52.53575134277344,"longitude":13.417802810668945,"confidence":1,"operatingStatus":"open","sourceDataset":"BrightQuery","sourceUpdated":"2026-09-17T20:01:51.007Z","location":"Berlin, DE","release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)"},{"id":"f58b26c2-28de-4b9b-8e7c-b2dbdeb20980","name":"Lieblings-zahnarzt","category":"dental_clinic","categoryPath":["health_care","outpatient_care_facility","dental_clinic"],"website":"http://www.lieblings-zahnarzt.de/berlin-schoeneberg/berliner-mundart","websiteHost":"lieblings-zahnarzt.de","phone":"+493075002390","phones":["+493075002390"],"emails":[],"emailType":"role-only","socials":[],"address":"Hauptstraße 23","city":"Berlin","postcode":"10827","region":"BE","country":"DE","latitude":52.486000061035156,"longitude":13.355497360229492,"confidence":1,"operatingStatus":"open","sourceDataset":"BrightQuery","sourceUpdated":"2026-09-17T20:01:51.007Z","location":"Berlin, DE","release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)"},{"id":"3a7d80cb-6d59-4433-b222-c29cf37b16a2","name":"Zahnärzte Dres. Zimny Und Kollegen","category":"dental_clinic","categoryPath":["health_care","outpatient_care_facility","dental_clinic"],"website":"http://www.zahnarzt-zimny.de/","websiteHost":"zahnarzt-zimny.de","phone":"+493088920200","phones":["+493088920200"],"emails":[],"emailType":"role-only","socials":[],"address":"Uhlandstraße 53","city":"Berlin","postcode":"10719","region":"BE","country":"DE","latitude":52.49617004394531,"longitude":13.32380485534668,"confidence":1,"operatingStatus":"open","sourceDataset":"BrightQuery","sourceUpdated":"2026-09-17T20:01:51.007Z","location":"Berlin, DE","release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)"}]}}}},"400":{"description":"Invalid parameter (`invalid_request`) or a private/local target (`url_not_allowed`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"success":false,"error":{"code":"url_not_allowed","message":"private, local and reserved hosts are not allowed"}}}}},"404":{"description":"`location_not_found`: the city could not be located (check the spelling, add the 2-letter country code, or use a bounding box).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"success":false,"error":{"code":"location_not_found","message":"\"Zzyzx Qwerty, DE\" could not be located. Check the spelling or use a bounding box \"west,south,east,north\".","details":{"errorType":"location_not_found"}}}}}},"413":{"description":"Request body or target document too large (`too_large`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"`upstream_error`: the places database is busy preparing other cities; retry in a minute. `not_configured` while the service is not connected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"504":{"description":"`timeout`: the first search of a city takes longer while its data is prepared. The preparation continues in the background: retry in about a minute (popular cities are prepared in advance).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/places/enriched":{"get":{"operationId":"placesEnrichedGet","summary":"Find businesses and read their websites for contact details (GET)","description":"Same search as `/places/search` (at most 10 places per call), and each business's own website (home page and a few contact pages, plain HTTP, robots.txt respected) is read for e-mail addresses, phone numbers and social profiles. Source values are never overwritten: what a website adds is returned in `enrichedEmails`, `enrichedPhones`, `enrichedSocials` and an `enrichment` object per place (`status`: found, nothing_found, unreachable, robots_disallowed, profile_page, no_website_in_source; pages read; where each e-mail was found). E-mails are role addresses (info@, contact@, sales@) only; personal addresses are withheld. A website shared by several places (a chain) is read once and each place keeps its own `id`. A place without a website in the source is not \"a business without a website\": the website is unknown. The page loading does not show that the business is still operating. Typical time 5-15 s.","tags":["Places"],"parameters":[{"name":"location","schema":{"type":"string"},"description":"A city with its 2-letter country code (`Berlin, DE`, `Austin, US`; country names such as `Lisbon, Portugal` work too), or a bounding box `west,south,east,north` of up to 2 square degrees. Cities are cut out along their real boundary.","required":true,"example":"Berlin, DE","in":"query"},{"name":"limit","schema":{"type":"integer","default":5,"minimum":1,"maximum":10},"description":"Places per call (each website is read, so the limit is lower).","required":false,"in":"query"},{"name":"category","schema":{"type":"string"},"description":"One or more Overture categories, comma-separated (up to 5): `restaurant`, `dental_clinic`, `real_estate_agent`, `hotel`, `attorney_or_law_firm`... Plain words (`dentist`, `lawyers`) and plurals work; a parent category (`food_and_drink`, `health_and_medical`) includes everything under it. Empty = all categories. When nothing matches, `hint` lists the categories that exist there.","required":false,"example":"dentist","in":"query"},{"name":"offset","schema":{"type":"integer","default":0,"minimum":0,"maximum":500},"description":"Skip this many places (paging, best-scored first).","required":false,"in":"query"},{"name":"minConfidence","schema":{"type":"number","default":0.85,"minimum":0.5,"maximum":1},"description":"Overture's confidence (0.5-1) that the place exists. Closed places are always removed.","required":false,"in":"query"},{"name":"requireWebsite","schema":{"type":"boolean","default":false},"description":"Only places with a website.","required":false,"in":"query"},{"name":"requirePhone","schema":{"type":"boolean","default":false},"description":"Only places with a phone number.","required":false,"in":"query"},{"name":"requireEmail","schema":{"type":"boolean","default":false},"description":"Only places with a role e-mail address (info@, contact@...) in the source data.","required":false,"in":"query"}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"location":{"type":"string","description":"The location you sent."},"resolvedTo":{"type":"string","nullable":true,"description":"What the location was resolved to (a city name, or the box you gave)."},"boundary":{"type":"string","nullable":true,"description":"`polygon` (the city's real boundary, from OpenStreetMap), `bounding box only` (built-in city table) or `bounding box`."},"categories":{"type":"array","items":{"type":"string"}},"release":{"type":"string","description":"Overture Maps release the data comes from."},"license":{"type":"string"},"attribution":{"type":"string","description":"Keep this attribution when you publish the data."},"count":{"type":"integer","description":"Places in this answer."},"available":{"type":"integer","description":"Places that match your filters in total (after duplicate removal): use `offset` to page."},"offset":{"type":"integer"},"hasMore":{"type":"boolean"},"duplicatesDropped":{"type":"integer","description":"Candidates removed as duplicates (same name and address, name and phone, name and spot, or website, postcode and name start)."},"cached":{"type":"boolean","description":"true when the city's data was already prepared (milliseconds); false on the first search of a city."},"places":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"category":{"type":"string"},"categoryPath":{"type":"array","items":{"type":"string"}},"website":{"type":"string"},"websiteHost":{"type":"string"},"phone":{"type":"string"},"phones":{"type":"array","items":{"type":"string"}},"emails":{"type":"array","items":{}},"emailType":{"type":"string"},"socials":{"type":"array","items":{}},"address":{"type":"string"},"city":{"type":"string"},"postcode":{"type":"string"},"region":{"type":"string"},"country":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"confidence":{"type":"integer"},"operatingStatus":{"type":"string"},"sourceDataset":{"type":"string"},"sourceUpdated":{"type":"string"},"location":{"type":"string"},"release":{"type":"string"},"license":{"type":"string"},"attribution":{"type":"string"},"enrichedEmails":{"type":"array","items":{}},"enrichedPhones":{"type":"array","items":{"type":"string"}},"enrichedSocials":{"type":"object","properties":{"instagram":{"type":"string"}}},"enrichment":{"type":"object","properties":{"mode":{"type":"string"},"placeId":{"type":"string"},"checkedAt":{"type":"string"},"status":{"type":"string"},"websiteReachable":{"type":"boolean"},"httpStatus":{"type":"integer"},"pagesRead":{"type":"integer"},"newEmails":{"type":"integer"},"sourceEmailKept":{"type":"boolean"},"emailPages":{"type":"object","properties":{}},"sharedWebsite":{"type":"boolean"},"note":{"type":"string"}}}}}},"enrichment":{"type":"object","description":"/places/enriched only: summary of the website reads (`websitesRead`, `found`, `unreachable`, `noWebsite`, `profileSite`, `withNewEmail`...).","additionalProperties":true},"hint":{"type":"string","description":"When nothing matched your category: the categories that exist in that area."}}},"example":{"success":true,"location":"Berlin, DE","resolvedTo":"Berlin, DE","boundary":"bounding box only","categories":["architect"],"release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)","count":4,"available":472,"offset":0,"hasMore":true,"duplicatesDropped":0,"cached":true,"enrichment":{"mode":"contacts","pagesPerSite":3,"websitesRead":4,"classified":0,"rows":4,"noWebsite":0,"profileSite":0,"skippedCap":0,"unreachable":1,"nothingFound":0,"found":3,"withNewEmail":2,"personalEmailsWithheld":1,"sharedWebsiteRows":0},"places":[{"id":"7952f34a-03f2-41a9-b3b4-beacdb10d8f9","name":"Brandt + Simon Architekten","category":"architect","categoryPath":["services_and_business","design_service","architect"],"website":"https://brandtundsimon.de/","websiteHost":"brandtundsimon.de","phone":"493024728030","phones":["493024728030"],"emails":[],"emailType":"role-only","socials":[],"address":"Marienburger Straße 19","city":"Berlin","postcode":"10405","region":"BE","country":"DE","latitude":52.53371047973633,"longitude":13.427009582519531,"confidence":1,"operatingStatus":"open","sourceDataset":"BrightQuery","sourceUpdated":"2026-09-17T20:01:51.007Z","location":"Berlin, DE","release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)","enrichedEmails":[],"enrichedPhones":["+493024728030"],"enrichedSocials":{"instagram":"https://www.instagram.com/brandtundsimon"},"enrichment":{"mode":"contacts","placeId":"7952f34a-03f2-41a9-b3b4-beacdb10d8f9","checkedAt":"2026-10-03T04:22:16.795Z","status":"found","websiteReachable":true,"httpStatus":200,"pagesRead":2,"newEmails":0,"sourceEmailKept":false,"emailPages":{},"sharedWebsite":false,"note":"The page loaded; this does not show that the business is still operating."}},{"id":"e012e7a7-fd52-4781-8865-2c255452f906","name":"Nikarus-haus","category":"architect","categoryPath":["services_and_business","design_service","architect"],"website":"http://www.nikarus-haus.de/","websiteHost":"nikarus-haus.de","phone":"03077329545","phones":["03077329545"],"emails":[],"emailType":"role-only","socials":[],"address":"Trachenbergring 85","city":"Berlin","postcode":"12249","region":"BE","country":"DE","latitude":52.428001403808594,"longitude":13.369757652282715,"confidence":1,"operatingStatus":"open","sourceDataset":"BrightQuery","sourceUpdated":"2026-09-17T20:01:51.007Z","location":"Berlin, DE","release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)","enrichment":{"mode":"contacts","placeId":"e012e7a7-fd52-4781-8865-2c255452f906","checkedAt":"2026-10-03T04:22:16.795Z","status":"unreachable","websiteReachable":false,"error":"The website's home page could not be read: target returned HTTP 500","httpStatus":500}},{"id":"6acb8806-c0e6-421d-8a34-4382ccff621e","name":"Möller Mainzer Architekten","category":"architect","categoryPath":["services_and_business","design_service","architect"],"website":"http://moellermainzer.de/","websiteHost":"moellermainzer.de","phone":"493023936720","phones":["493023936720"],"emails":[],"emailType":"role-only","socials":[],"address":"Friesickestraße 17","city":"Berlin","postcode":"13086","region":"BE","country":"DE","latitude":52.55320739746094,"longitude":13.440535545349121,"confidence":0.999,"operatingStatus":"open","sourceDataset":"BrightQuery","sourceUpdated":"2026-09-17T20:01:51.007Z","location":"Berlin, DE","release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)","enrichedEmails":["info@moellermainzer.de"],"enrichedPhones":["+493023936720","+493091688406"],"enrichedSocials":{"instagram":"https://www.instagram.com/moellermainzerarchitekten"},"enrichment":{"mode":"contacts","placeId":"6acb8806-c0e6-421d-8a34-4382ccff621e","checkedAt":"2026-10-03T04:22:16.795Z","status":"found","websiteReachable":true,"httpStatus":200,"pagesRead":3,"newEmails":1,"sourceEmailKept":false,"emailPages":{"info@moellermainzer.de":"https://moellermainzer.de/"},"sharedWebsite":false,"note":"The page loaded; this does not show that the business is still operating."}},{"id":"12acbc35-d726-48b0-aab1-83514901fbf5","name":"A Better Place","category":"architect","categoryPath":["services_and_business","design_service","architect"],"website":"https://www.a-better-place.de/","websiteHost":"a-better-place.de","phone":"015115548536","phones":["015115548536"],"emails":[],"emailType":"role-only","socials":[],"address":"Saarbrücker Straße 19","city":"Berlin","postcode":"10405","region":"BE","country":"DE","latitude":52.53018569946289,"longitude":13.412386894226074,"confidence":0.998,"operatingStatus":"open","sourceDataset":"BrightQuery","sourceUpdated":"2026-09-17T20:01:51.007Z","location":"Berlin, DE","release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)","enrichedEmails":["anfrage@a-better-place.de"],"enrichedPhones":[],"enrichedSocials":{"instagram":"https://www.instagram.com/abetterplace_architekten"},"enrichment":{"mode":"contacts","placeId":"12acbc35-d726-48b0-aab1-83514901fbf5","checkedAt":"2026-10-03T04:22:16.795Z","status":"found","websiteReachable":true,"httpStatus":200,"pagesRead":3,"newEmails":1,"sourceEmailKept":false,"emailPages":{"anfrage@a-better-place.de":"https://www.a-better-place.de/impressum/"},"sharedWebsite":false,"note":"The page loaded; this does not show that the business is still operating."}}]}}}},"400":{"description":"Invalid parameter (`invalid_request`) or a private/local target (`url_not_allowed`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"success":false,"error":{"code":"url_not_allowed","message":"private, local and reserved hosts are not allowed"}}}}},"404":{"description":"`location_not_found`: the city could not be located (check the spelling, add the 2-letter country code, or use a bounding box).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"success":false,"error":{"code":"location_not_found","message":"\"Zzyzx Qwerty, DE\" could not be located. Check the spelling or use a bounding box \"west,south,east,north\".","details":{"errorType":"location_not_found"}}}}}},"413":{"description":"Request body or target document too large (`too_large`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"`upstream_error`: the places database is busy preparing other cities; retry in a minute. `not_configured` while the service is not connected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"504":{"description":"`timeout`: the first search of a city takes longer while its data is prepared. The preparation continues in the background: retry in about a minute (popular cities are prepared in advance).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"placesEnriched","summary":"Find businesses and read their websites for contact details","description":"Same search as `/places/search` (at most 10 places per call), and each business's own website (home page and a few contact pages, plain HTTP, robots.txt respected) is read for e-mail addresses, phone numbers and social profiles. Source values are never overwritten: what a website adds is returned in `enrichedEmails`, `enrichedPhones`, `enrichedSocials` and an `enrichment` object per place (`status`: found, nothing_found, unreachable, robots_disallowed, profile_page, no_website_in_source; pages read; where each e-mail was found). E-mails are role addresses (info@, contact@, sales@) only; personal addresses are withheld. A website shared by several places (a chain) is read once and each place keeps its own `id`. A place without a website in the source is not \"a business without a website\": the website is unknown. The page loading does not show that the business is still operating. Typical time 5-15 s.\n\nThe same parameters as the GET form, sent as a JSON body.","tags":["Places"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"location":{"type":"string","description":"A city with its 2-letter country code (`Berlin, DE`, `Austin, US`; country names such as `Lisbon, Portugal` work too), or a bounding box `west,south,east,north` of up to 2 square degrees. Cities are cut out along their real boundary."},"limit":{"type":"integer","default":5,"minimum":1,"maximum":10,"description":"Places per call (each website is read, so the limit is lower)."},"category":{"type":"string","description":"One or more Overture categories, comma-separated (up to 5): `restaurant`, `dental_clinic`, `real_estate_agent`, `hotel`, `attorney_or_law_firm`... Plain words (`dentist`, `lawyers`) and plurals work; a parent category (`food_and_drink`, `health_and_medical`) includes everything under it. Empty = all categories. When nothing matches, `hint` lists the categories that exist there."},"offset":{"type":"integer","default":0,"minimum":0,"maximum":500,"description":"Skip this many places (paging, best-scored first)."},"minConfidence":{"type":"number","default":0.85,"minimum":0.5,"maximum":1,"description":"Overture's confidence (0.5-1) that the place exists. Closed places are always removed."},"requireWebsite":{"type":"boolean","default":false,"description":"Only places with a website."},"requirePhone":{"type":"boolean","default":false,"description":"Only places with a phone number."},"requireEmail":{"type":"boolean","default":false,"description":"Only places with a role e-mail address (info@, contact@...) in the source data."}},"required":["location"]}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":true},"location":{"type":"string","description":"The location you sent."},"resolvedTo":{"type":"string","nullable":true,"description":"What the location was resolved to (a city name, or the box you gave)."},"boundary":{"type":"string","nullable":true,"description":"`polygon` (the city's real boundary, from OpenStreetMap), `bounding box only` (built-in city table) or `bounding box`."},"categories":{"type":"array","items":{"type":"string"}},"release":{"type":"string","description":"Overture Maps release the data comes from."},"license":{"type":"string"},"attribution":{"type":"string","description":"Keep this attribution when you publish the data."},"count":{"type":"integer","description":"Places in this answer."},"available":{"type":"integer","description":"Places that match your filters in total (after duplicate removal): use `offset` to page."},"offset":{"type":"integer"},"hasMore":{"type":"boolean"},"duplicatesDropped":{"type":"integer","description":"Candidates removed as duplicates (same name and address, name and phone, name and spot, or website, postcode and name start)."},"cached":{"type":"boolean","description":"true when the city's data was already prepared (milliseconds); false on the first search of a city."},"places":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"category":{"type":"string"},"categoryPath":{"type":"array","items":{"type":"string"}},"website":{"type":"string"},"websiteHost":{"type":"string"},"phone":{"type":"string"},"phones":{"type":"array","items":{"type":"string"}},"emails":{"type":"array","items":{}},"emailType":{"type":"string"},"socials":{"type":"array","items":{}},"address":{"type":"string"},"city":{"type":"string"},"postcode":{"type":"string"},"region":{"type":"string"},"country":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"confidence":{"type":"integer"},"operatingStatus":{"type":"string"},"sourceDataset":{"type":"string"},"sourceUpdated":{"type":"string"},"location":{"type":"string"},"release":{"type":"string"},"license":{"type":"string"},"attribution":{"type":"string"},"enrichedEmails":{"type":"array","items":{}},"enrichedPhones":{"type":"array","items":{"type":"string"}},"enrichedSocials":{"type":"object","properties":{"instagram":{"type":"string"}}},"enrichment":{"type":"object","properties":{"mode":{"type":"string"},"placeId":{"type":"string"},"checkedAt":{"type":"string"},"status":{"type":"string"},"websiteReachable":{"type":"boolean"},"httpStatus":{"type":"integer"},"pagesRead":{"type":"integer"},"newEmails":{"type":"integer"},"sourceEmailKept":{"type":"boolean"},"emailPages":{"type":"object","properties":{}},"sharedWebsite":{"type":"boolean"},"note":{"type":"string"}}}}}},"enrichment":{"type":"object","description":"/places/enriched only: summary of the website reads (`websitesRead`, `found`, `unreachable`, `noWebsite`, `profileSite`, `withNewEmail`...).","additionalProperties":true},"hint":{"type":"string","description":"When nothing matched your category: the categories that exist in that area."}}},"example":{"success":true,"location":"Berlin, DE","resolvedTo":"Berlin, DE","boundary":"bounding box only","categories":["architect"],"release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)","count":4,"available":472,"offset":0,"hasMore":true,"duplicatesDropped":0,"cached":true,"enrichment":{"mode":"contacts","pagesPerSite":3,"websitesRead":4,"classified":0,"rows":4,"noWebsite":0,"profileSite":0,"skippedCap":0,"unreachable":1,"nothingFound":0,"found":3,"withNewEmail":2,"personalEmailsWithheld":1,"sharedWebsiteRows":0},"places":[{"id":"7952f34a-03f2-41a9-b3b4-beacdb10d8f9","name":"Brandt + Simon Architekten","category":"architect","categoryPath":["services_and_business","design_service","architect"],"website":"https://brandtundsimon.de/","websiteHost":"brandtundsimon.de","phone":"493024728030","phones":["493024728030"],"emails":[],"emailType":"role-only","socials":[],"address":"Marienburger Straße 19","city":"Berlin","postcode":"10405","region":"BE","country":"DE","latitude":52.53371047973633,"longitude":13.427009582519531,"confidence":1,"operatingStatus":"open","sourceDataset":"BrightQuery","sourceUpdated":"2026-09-17T20:01:51.007Z","location":"Berlin, DE","release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)","enrichedEmails":[],"enrichedPhones":["+493024728030"],"enrichedSocials":{"instagram":"https://www.instagram.com/brandtundsimon"},"enrichment":{"mode":"contacts","placeId":"7952f34a-03f2-41a9-b3b4-beacdb10d8f9","checkedAt":"2026-10-03T04:22:16.795Z","status":"found","websiteReachable":true,"httpStatus":200,"pagesRead":2,"newEmails":0,"sourceEmailKept":false,"emailPages":{},"sharedWebsite":false,"note":"The page loaded; this does not show that the business is still operating."}},{"id":"e012e7a7-fd52-4781-8865-2c255452f906","name":"Nikarus-haus","category":"architect","categoryPath":["services_and_business","design_service","architect"],"website":"http://www.nikarus-haus.de/","websiteHost":"nikarus-haus.de","phone":"03077329545","phones":["03077329545"],"emails":[],"emailType":"role-only","socials":[],"address":"Trachenbergring 85","city":"Berlin","postcode":"12249","region":"BE","country":"DE","latitude":52.428001403808594,"longitude":13.369757652282715,"confidence":1,"operatingStatus":"open","sourceDataset":"BrightQuery","sourceUpdated":"2026-09-17T20:01:51.007Z","location":"Berlin, DE","release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)","enrichment":{"mode":"contacts","placeId":"e012e7a7-fd52-4781-8865-2c255452f906","checkedAt":"2026-10-03T04:22:16.795Z","status":"unreachable","websiteReachable":false,"error":"The website's home page could not be read: target returned HTTP 500","httpStatus":500}},{"id":"6acb8806-c0e6-421d-8a34-4382ccff621e","name":"Möller Mainzer Architekten","category":"architect","categoryPath":["services_and_business","design_service","architect"],"website":"http://moellermainzer.de/","websiteHost":"moellermainzer.de","phone":"493023936720","phones":["493023936720"],"emails":[],"emailType":"role-only","socials":[],"address":"Friesickestraße 17","city":"Berlin","postcode":"13086","region":"BE","country":"DE","latitude":52.55320739746094,"longitude":13.440535545349121,"confidence":0.999,"operatingStatus":"open","sourceDataset":"BrightQuery","sourceUpdated":"2026-09-17T20:01:51.007Z","location":"Berlin, DE","release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)","enrichedEmails":["info@moellermainzer.de"],"enrichedPhones":["+493023936720","+493091688406"],"enrichedSocials":{"instagram":"https://www.instagram.com/moellermainzerarchitekten"},"enrichment":{"mode":"contacts","placeId":"6acb8806-c0e6-421d-8a34-4382ccff621e","checkedAt":"2026-10-03T04:22:16.795Z","status":"found","websiteReachable":true,"httpStatus":200,"pagesRead":3,"newEmails":1,"sourceEmailKept":false,"emailPages":{"info@moellermainzer.de":"https://moellermainzer.de/"},"sharedWebsite":false,"note":"The page loaded; this does not show that the business is still operating."}},{"id":"12acbc35-d726-48b0-aab1-83514901fbf5","name":"A Better Place","category":"architect","categoryPath":["services_and_business","design_service","architect"],"website":"https://www.a-better-place.de/","websiteHost":"a-better-place.de","phone":"015115548536","phones":["015115548536"],"emails":[],"emailType":"role-only","socials":[],"address":"Saarbrücker Straße 19","city":"Berlin","postcode":"10405","region":"BE","country":"DE","latitude":52.53018569946289,"longitude":13.412386894226074,"confidence":0.998,"operatingStatus":"open","sourceDataset":"BrightQuery","sourceUpdated":"2026-09-17T20:01:51.007Z","location":"Berlin, DE","release":"2026-09-23.1","license":"CDLA-Permissive-2.0","attribution":"© Overture Maps Foundation (places)","enrichedEmails":["anfrage@a-better-place.de"],"enrichedPhones":[],"enrichedSocials":{"instagram":"https://www.instagram.com/abetterplace_architekten"},"enrichment":{"mode":"contacts","placeId":"12acbc35-d726-48b0-aab1-83514901fbf5","checkedAt":"2026-10-03T04:22:16.795Z","status":"found","websiteReachable":true,"httpStatus":200,"pagesRead":3,"newEmails":1,"sourceEmailKept":false,"emailPages":{"anfrage@a-better-place.de":"https://www.a-better-place.de/impressum/"},"sharedWebsite":false,"note":"The page loaded; this does not show that the business is still operating."}}]}}}},"400":{"description":"Invalid parameter (`invalid_request`) or a private/local target (`url_not_allowed`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"success":false,"error":{"code":"url_not_allowed","message":"private, local and reserved hosts are not allowed"}}}}},"404":{"description":"`location_not_found`: the city could not be located (check the spelling, add the 2-letter country code, or use a bounding box).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"success":false,"error":{"code":"location_not_found","message":"\"Zzyzx Qwerty, DE\" could not be located. Check the spelling or use a bounding box \"west,south,east,north\".","details":{"errorType":"location_not_found"}}}}}},"413":{"description":"Request body or target document too large (`too_large`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"`upstream_error`: the places database is busy preparing other cities; retry in a minute. `not_configured` while the service is not connected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"504":{"description":"`timeout`: the first search of a city takes longer while its data is prepared. The preparation continues in the background: retry in about a minute (popular cities are prepared in advance).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","required":["success","error"],"properties":{"success":{"const":false},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["not_configured","unauthorized","not_found","method_not_allowed","invalid_request","rate_limited","url_not_allowed","target_blocked","target_unreachable","target_error","unsupported_content","too_large","timeout","upstream_error","board_not_found","app_not_found","robots_disallowed","browser_busy","region_unavailable","no_region_delivered","location_not_found"]},"message":{"type":"string"},"retryable":{"type":"boolean","description":"true for rate_limited, timeout, upstream_error and browser_busy; false for other errors."},"retryAfterSeconds":{"type":"integer","description":"Seconds to wait before retrying, when a numeric Retry-After header is present."},"details":{"type":"object","additionalProperties":true}}}}}}}}