Apple Maps Scraper
Pricing
from $2.89 / 1,000 places
Apple Maps Scraper
Scrape Apple Maps places by search, URL, or guide: name, address, phone, website, categories, ratings, hours, photos, amenities, reviews, and coordinates. Export to JSON, CSV, or Excel.
Pricing
from $2.89 / 1,000 places
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Apple Maps Scraper
Scrape Apple Maps places by search query and location, place URL, search URL, or Apple Maps Guide — name, address, phone, website, categories, ratings, opening hours, photos, amenities, reviews, and coordinates for every place. Export to JSON, CSV, or Excel, or use the API.
| Search any city in any country and language, sort by best match, distance, or rating, filter by rating, open now, phone, or website, and get 60+ fields per place — including EV charger connectors, transit departures, trail lengths, Michelin and guide write-ups. |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
Use the Apify Actor "parsebird/apple-maps-scraper" to scrape places from Apple Maps. Call it with the ApifyClient: from apify_client import ApifyClient; client = ApifyClient("<APIFY_TOKEN>"); run = client.actor("parsebird/apple-maps-scraper").call(run_input={"searchQueries": [{"query": "coffee shops", "location": "Manhattan, New York"}], "maxResults": 20}); items = client.dataset(run["defaultDatasetId"]).list_items().items. Inputs (at least one of the first four is required): searchQueries (array of {query, location, maxResults?}), placeUrls (array of Apple Maps place links: place?place-id=..., place?auid=..., ?q=Name&address=..., maps.apple/p/... share links), searchUrls (array of maps.apple.com/search?query=...¢er=lat,lng&span=..), guideUrls (array of maps.apple.com/guides?curated=ID links or guide IDs), maxResults (integer, default 50, per search), sortBy ("relevance" | "distance" | "rating"), includeNearbyPlaces (boolean), countryCode (default "US"), language (default "en-US"), openNow, hasPhone, hasWebsite (booleans), minRating ("3" | "3.5" | "4" | "4.5"), proxyConfiguration (optional). Output fields per place include placeId, placeIdHex, name, localName, placeType, phone, phoneFormatted, website, categories, categoryTaxonomy, address (full and structured), location (lat, lng), timezone, rating (provider, score, maxScore, reviewCount, categoryRatings, normalizedScore5), priceLevel, reviews, tips, editorial, accolades, featuredIn (guides), hours, openNow, serviceHours, amenities, evCharger, transit, trails, photos, coverPhoto, quickLinks, claimUrl, appleUrl, and provenance (searchQuery, searchLocation, matchedLocation, searchRank, sourceUrl, sourceGuide, scrapedAt). Full API docs: https://apify.com/parsebird/apple-maps-scraper/api — get a token at https://console.apify.com/settings/integrations
What is Apple Maps Scraper?
Apple Maps is the default map on every iPhone, iPad, and Mac, with business listings enriched by partners such as Yelp, Tripadvisor, Foursquare, Tabelog, PlugShare, and the MICHELIN Guide, plus Apple's own ratings. Apple Maps Scraper turns those listings into structured data you can download or pull through an API.
The easiest way to try it: add a search such as coffee shops in Manhattan, New York and click Start. It works as an Apple Maps API alternative that needs no Apple Developer account or API keys.
What can Apple Maps Scraper do?
- 🔍 Search by query and location — "dentist" in "Shibuya, Tokyo", "EV charging station" in "Berlin, Germany"; locations are matched by Apple Maps (cities, neighbourhoods, postcodes, landmarks)
- 🔗 Scrape place URLs —
place?place-id=…,place?auid=…, address links with a business name, andmaps.apple/p/…share links - 🗺️ Replay search URLs — paste a
maps.apple.com/search?…link and keep its query, center, and span - 📚 Scrape Apple Maps Guides — every place in a curated guide, with the guide's title, publisher, and what it says about each place
- ↕️ Sort like the app — best match, nearest first, or highest rated
- ➕ Include nearby places — also collect the matching places Apple shows around the search area (up to ~20 more per search)
- 🧹 Filters — open now, minimum rating, has phone, has website; filtered-out places are not saved or billed
- 🌍 Any country and language — country code and language change which places are returned and how names, categories, and addresses read
- ⏱️ Scheduling, API, and integrations — run on a schedule to track rankings, call it from the Apify API, and connect integrations like Google Sheets, Make, or Zapier
What data can you extract from Apple Maps?
| Group | Fields |
|---|---|
| Identity | placeId, placeIdHex, name, localName (local-language name), placeType, categories, categoryTaxonomy (e.g. dining.bar.cocktail_bar), categoryGroup, capacity |
| Contact | phone, phoneFormatted, altPhones, website, quickLinks (menu, reservations, ordering) |
| Location | address (full, short, street, city, state, postal code, country, neighbourhood), location (lat/lng), timezone, timezoneOffset, parentPlace, containedIn, bounds, roadAccess (entrances) |
| Reputation | rating (source, native scale, review count, Apple category ratings, normalizedScore5), priceLevel, reviews, tips, accolades (e.g. MICHELIN stars) |
| Editorial | description, editorial (write-ups with source), featuredIn (guides and what they say about the place) |
| Hours | hours (weekly hours, 24-hour flag), openNow, serviceHours (e.g. delivery, dinner) |
| Media | photos (with category, author, source, added date), coverPhoto, brandIcon |
| Category-specific | evCharger (connectors, power, availability), transit (lines, departures, operators, incidents), trails (trails at a trailhead with length), factoids, amenities |
| Provenance | searchQuery, searchLocation, matchedLocation, searchRank, sourceUrl, sourceGuide, scrapedAt |
Fields are filled when Apple Maps publishes them for the place, otherwise they are null or empty.
How to scrape Apple Maps
- Open Apple Maps Scraper in Apify Console and click Try for free (an Apify account is required).
- Add one or more Search queries (
query+location), or paste Place URLs, Search URLs, or Guide URLs. - Optionally set the Country code and Language for the market you are scraping, a Sort by order, and Filters.
- Set Max results per search and click Start.
- Download the places from the Output tab in JSON, CSV, Excel, HTML, or XML, or read them through the API.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | array | — | Searches: { "query": "...", "location": "...", "maxResults": n }. location and maxResults are optional |
placeUrls | array | — | Apple Maps place links or IDs |
searchUrls | array | — | Apple Maps search links with query and center (and optional span) |
guideUrls | array | — | Apple Maps Guide links or guide IDs |
maxResults | integer | 50 | Max places per search query or search URL |
sortBy | string | relevance | relevance (Apple's best match), distance, or rating |
includeNearbyPlaces | boolean | false | Also collect the unranked matching places shown around the search area |
countryCode | string | US | Regional context, e.g. GB, FR, JP |
language | string | en-US | Language, e.g. fr-FR, de-DE, ja-JP |
openNow | boolean | false | Keep only places open at run time (local time) |
minRating | string | — | Keep only places rated at least 3, 3.5, 4, or 4.5 out of 5 |
hasPhone / hasWebsite | boolean | false | Keep only places with a phone number / website |
proxyConfiguration | object | none | Optional proxy |
At least one of searchQueries, placeUrls, searchUrls, or guideUrls is required. Results are deduplicated across all inputs.
Example inputs
Search three cities:
{"searchQueries": [{ "query": "coffee shops", "location": "Manhattan, New York" },{ "query": "dentist", "location": "Shibuya, Tokyo" },{ "query": "EV charging station", "location": "Berlin, Germany" }],"maxResults": 50}
Scrape specific places:
{"placeUrls": ["https://maps.apple.com/place?place-id=I918CB7E77B4C7910","https://maps.apple.com/place?auid=11204647164469319519","https://maps.apple.com/?q=Lifeline+Urgent+Care&address=13410+Briar+Forest+Dr,+Houston,+TX+77077"]}
Every place in an Apple Maps Guide:
{"guideUrls": ["https://maps.apple.com/guides?curated=1694850223688040849"]}
Highly rated dentists with a phone and website:
{"searchQueries": [{ "query": "dentist", "location": "Brooklyn, New York" }],"maxResults": 100,"hasPhone": true,"hasWebsite": true,"minRating": "4.5"}
Local-language data for Japan:
{"searchQueries": [{ "query": "ramen", "location": "Shinjuku, Tokyo" }],"countryCode": "JP","language": "ja-JP"}
Output example
{"placeId": "11204647164469319519","placeIdHex": "I9B7EE73B37C8175F","name": "The French Laundry","placeType": "BUSINESS","phone": "+17079442380","phoneFormatted": "+1 (707) 944-2380","altPhones": ["+17079477182"],"website": "https://www.thomaskeller.com/tfl","categories": ["French Cuisine", "Restaurant", "Bar", "European Cuisine", "Fine Dining Restaurant", "American Cuisine", "Wine Bar", "Signature Restaurant", "New American Cuisine"],"categoryTaxonomy": "dining.restaurant.european_cuisine.french_cuisine","categoryGroup": "fooddrinks","displayCategory": "French Cuisine","address": {"full": "6640 Washington St, Yountville, CA 94599, United States","street": "6640 Washington St","city": "Yountville","subAdministrativeArea": "Napa County","state": "California","stateCode": "CA","postalCode": "94599","country": "United States","countryCode": "US"},"parentPlace": { "placeId": "6254911099258597695", "name": "Yountville, CA" },"location": { "lat": 38.4044062, "lng": -122.364977 },"timezone": "America/Los_Angeles","rating": {"provider": "Apple","ratingType": "APPLE_RATING","score": 85,"maxScore": 100,"reviewCount": 55,"categoryRatings": [{ "category": "Atmosphere", "score": 86, "maxScore": 100, "reviewCount": 51 },{ "category": "Customer Service", "score": 86, "maxScore": 100, "reviewCount": 49 },{ "category": "Food & Drink", "score": 86, "maxScore": 100, "reviewCount": 49 }],"normalizedScore5": 4.25},"editorial": [{"provider": "MICHELIN Guide","title": "Michelin","text": "Thomas Keller’s legendary destination still doesn’t miss a beat. …","url": "https://guide.michelin.com/r/122806"}],"accolades": [{ "provider": "MICHELIN Guide", "text": "Three Stars" }],"featuredIn": [{"guideId": "5313904882904543969","title": "The Toughest Reservations In The US","publisher": "The Infatuation","placeDescription": "The Yountville fine dining institution is as synonymous with Wine Country as the actual wine. …","placeCount": 17,"updatedAt": "2025-06-05T17:29:39+00:00"}],"hours": {"weekly": [{ "days": ["SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"], "open": "16:00", "close": "20:00" }],"open24Hours": false,"hoursType": "NORMAL"},"openNow": false,"amenities": [{ "name": "Accepts Apple Pay", "amenityId": "crossbusiness.payments.applepay", "available": true, "source": null },{ "name": "Wheelchair Accessible", "amenityId": "crossbusiness.accessibility_features.wheelchair_accessible", "available": true, "source": "com.apple.abr" }],"photos": [{"url": "https://is1-ssl.mzstatic.com/image/thumb/amsUuRMbE80gPTF2kuKCjw/1000x1000bb.jpg","width": 1000,"height": 1000,"category": "Food & Drink","author": "David Escalante/The French Laundry","provider": "MICHELIN Guide","addedAt": "2026-08-20T14:01:31+00:00"}],"quickLinks": [{ "title": "Menu", "url": "https://www.yelp.com/menu/the-french-laundry-yountville-7?…", "appStoreId": "284910350" },{ "title": "Reserve", "url": "https://guide.michelin.com/r/122806", "appStoreId": "1541129177" }],"claimUrl": "https://business.apple.com/?claimId=11204647164469319519","appleUrl": "https://maps.apple.com/place?auid=11204647164469319519","searchQuery": "The French Laundry","searchLocation": "Yountville, CA","matchedLocation": "Yountville","searchRank": 1,"sourceGuide": null,"scrapedAt": "2026-10-11T07:57:38.881Z"}
Other kinds of places carry their own detail. A few real examples:
{ "name": "Kura Sushi Global flagship store Ginza", "localName": "くら寿司 グローバル旗艦店 銀座", "localNameLocale": "ja","rating": { "provider": "Tabelog", "ratingType": "USER_RATING", "score": 3.12, "maxScore": 5, "reviewCount": 163 } }{ "name": "Vattenfall InCharge","evCharger": { "connectors": [{ "connectorType": "CONNECTOR_TYPE_MENNEKES", "connectorName": "Mennekes", "chargingSpeed": "Slow", "powerWatts": 11000, "total": 10, "status": "NO_STATUS" }], "available": 0, "total": 10 } }{ "name": "Bear Lake Trailhead","trails": [{ "placeId": "387857515193945776", "name": "Bear Lake Loop Trail", "categories": ["Trail"], "length": { "value": 1.05632, "unit": "UNIT_TYPE_KILOMETERS" } }] }{ "name": "Alexanderplatz Bhf", "localName": "Alexanderplatz Bahnhof","transit": { "lines": [{ "lineId": "11808568026067274535", "name": "S-Bahn Berlin S3", "shortName": "S3", "color": "0E67ABFF", "transitType": 109 }],"operators": ["Berliner Verkehrsbetriebe", "DB Fernverkehr AG", "DB Regio AG"] } }{ "name": "Wembley Stadium", "capacity": 90000 }
Use Apple Maps Scraper through the API
Python (apify-client):
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("parsebird/apple-maps-scraper").call(run_input={"searchQueries": [{"query": "coworking space", "location": "Austin, TX"},{"query": "coworking space", "location": "Seattle, WA"},],"maxResults": 50,"hasWebsite": True,})for place in client.dataset(run["defaultDatasetId"]).iterate_items():print(place["name"], place["phoneFormatted"], place["website"], place["address"]["full"])
JavaScript (apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<APIFY_TOKEN>' });const run = await client.actor('parsebird/apple-maps-scraper').call({searchQueries: [{ query: 'coworking space', location: 'Austin, TX' }],maxResults: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((p) => console.log(p.name, p.rating?.normalizedScore5, p.address?.full));
See the API tab for endpoints and more examples.
Use cases
- Lead generation — local businesses with phone numbers and websites in any city
- Local SEO and rank tracking — schedule the same search and track
searchRankover time - Market research — density, ratings, and price levels of a category across neighbourhoods or cities
- Store locators and data enrichment — coordinates, opening hours, and structured addresses for brands and chains
- EV and mobility data — charger connectors and power, transit lines and departures
- Travel and hospitality — places featured in Apple Maps Guides, Michelin distinctions, and editorial write-ups
How it works
- Each location is matched with Apple Maps, and the search covers an area roughly 2–10 km across around it, sized to the matched place.
- Apple Maps ranks up to about 25 places per search. With Include nearby places on, the matching places shown around the area are added too.
- For
ratingsorting, Apple's top-rated results and its best matches are combined, limited to places inside the search area, and ordered by rating (then number of ratings). - Place URLs and guides are looked up directly; address links are matched to the named business at that address.
- Every place is mapped into one consistent format, filtered, deduplicated, and saved.
How much does it cost to scrape Apple Maps?
Apple Maps Scraper uses pay-per-event pricing: you pay for each place saved to the dataset. Compute costs are included in the event price. Places removed by filters are not saved and not billed.
| Plan | Price per place | Price per 1,000 places |
|---|---|---|
| Free | $0.00399 | $3.99 |
| Bronze | $0.00359 | $3.59 |
| Silver | $0.00319 | $3.19 |
| Gold | $0.00289 | $2.89 |
For example, 25 places for each of 4 cities (100 places) cost about $0.40 on the Free plan. Apify accounts include monthly platform usage credits, and you can set a maximum spend per run — the Actor stops when the limit is reached.
Is it legal to scrape Apple Maps?
Scraping publicly available business information — names, addresses, phone numbers, opening hours, and ratings visible to anyone on maps.apple.com — is generally legal in the US, EU, and many other jurisdictions. This Actor does not log in and only collects publicly displayed place data. Some fields, such as reviewer names in reviews and tips, can be personal data: process them lawfully (for example under GDPR or CCPA) and review Apple's Maps terms. Read more in Apify's guide: Is web scraping legal?
Other maps and local business scrapers
- Yandex Maps Scraper — businesses, phones, and emails from Yandex Maps
- Yandex Maps Reviews Scraper — reviews from Yandex Maps
- OpenTable Restaurants Scraper — restaurant listings from OpenTable
- TheFork Scraper — restaurants, menus, and reviews from TheFork
- Nextdoor Business Scraper — local business profiles from Nextdoor
FAQ
Do I need an Apple ID or API key? No. The Actor reads public Apple Maps data. You only need an Apify account.
How many places does one search return?
Apple Maps ranks up to about 25 places per search. Turn on includeNearbyPlaces for up to ~20 more per search, run several more specific locations (e.g. neighbourhoods instead of a whole city), or use rating sorting, which combines two result sets.
Why did a location match something unexpected?
Locations are matched by Apple Maps, so each record includes searchLocation (what you asked for) and matchedLocation (what Apple matched). The log warns when they look unrelated, and locations Apple cannot match at all are skipped. More specific locations ("Soho, London" rather than "London") give better results.
Why do ratings have different scales?
Ratings keep their source and native scale — Apple ratings are 0–100, while partner ratings such as Yelp, Tripadvisor, or Tabelog are out of 5. rating.normalizedScore5 converts every rating to 0–5, and minRating uses that value.
What does searchRank mean?
The place's position in the search results for your query, starting at 1, in the sort order you chose. It is empty for places from URLs, guides, and the nearby-places option.
Do country and language matter? Yes. They change which places Apple returns, their ranking, and how names, categories, and addresses are written. Match them to the market you are scraping.
What happens with a share link that only contains an address?
Share links and address links are matched to the named business when a name is included. If the link has no business name, the Actor returns the address itself (placeType: "ADDRESS").
Can I schedule it? Yes. Use Apify schedules to run daily or weekly and integrations to send results onward.
Can I use it with AI agents? Yes. Copy the AI assistant block above into ChatGPT, Claude, or Cursor, or connect the Actor through the Apify MCP server.
Found a bug or need a field? Open an issue on the Actor's Issues tab — feedback is welcome.