Apple Maps Places Scraper
Pricing
from $0.03 / 1,000 item extracteds
Apple Maps Places Scraper
Extract Apple Maps places, businesses, POIs, contacts, addresses, coordinates, ratings, websites, and local lead data from searches or URLs.
Pricing
from $0.03 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Fetch Cat
Maintained by CommunityActor stats
0
Bookmarked
11
Total users
4
Monthly active users
8 days ago
Last modified
Categories
Security
Limited permissionsShare
Export public Apple Maps places from search queries or place URLs, including available addresses, coordinates, phone numbers, websites and rating summaries. Build local business lists or enrich a POI database. Fields vary by place and results are not an exhaustive directory.
Quick start
- Enter a search query and a location, or paste a public Apple Maps URL.
- Set a small
maxResultslimit and start the Actor. - Open the dataset and export JSON, CSV or Excel.
{"queries": ["coffee shops"],"location": "San Francisco, CA","startUrls": [],"maxResults": 5}
Use explicit coordinates to choose the search center. This does not guarantee an exact boundary or exhaustive neighborhood coverage. An unresolved text location falls back to San Francisco with a warning. Ratings and review counts are summaries, not review text.
Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.
Ready-to-run examples
Choose a public example to see its settings before starting a run:
- Compare Apple Maps cafes and bakeries in Boston
- Scrape grocery stores near downtown LA coordinates
- Find Blue Bottle Coffee locations on Apple Maps
What you get
Each dataset row describes a public place, with available place identifiers, addresses, coordinates, phone numbers, websites and rating summaries. Keep the Apple Maps link for reference and join identifiers to your own location records. Unavailable fields can be null, and rating summaries do not include review text.
Who is it for?
- Sales and local operations teams: collect available business names, phone numbers, websites and addresses for a prospecting spreadsheet.
- Retail researchers: collect category results around chosen coordinates and compare the exported locations in your own territory analysis.
- POI data teams: match available public place identifiers and coordinates to an existing location database.
This Actor retrieves public place data without an Apple account. It does not collect email addresses, full reviews or private account history, and does not detect changes between runs.
Input settings
Provide at least one nonempty queries entry or a supported startUrls URL. Both can be supplied. URLs are processed first, followed by queries under one shared result limit.
| Setting | JSON key | Meaning |
|---|---|---|
| Search queries | queries | Categories or business names. The form prefills coffee shops. |
| Location | location | City, area or landmark. The form prefills San Francisco. |
| Coordinates | lat, lng | Supply both. Coordinates override location. |
| Place or search URLs | startUrls | Public maps.apple.com links. The form prefills an example URL. |
| Maximum places | maxResults | Shared cap, 1–1,000. Form default 20. Send an explicit API bound. |
| Language | language | Label locale. Default en-US. |
| Country code | countryCode | Search context. Default US. |
| Include photos | includePhotos | Include up to ten public photo URLs when available. Default false. |
| Maximum run time | maxRunSeconds | Optional 60–270 second work budget. See field help. |
Prefills are form examples, not API inputs. When no center is supplied, the runtime uses San Francisco. The runtime fallback for omitted maxResults is 50. The schema/form default is 20. This Actor uses direct connections and has no supported proxy setting.
Example inputs
Use the Quick start input as a small first run. Adjust the fields described above for your own data.
Output data
Each row describes a place. The following is a synthetic shape-only excerpt, not a verified business listing:
{"name": "Example place","category": null,"address": null,"latitude": null,"longitude": null,"phone": null,"website": null,"rating": null,"reviewCount": null,"photos": null,"sourceQuery": "coffee shops","sourceUrl": null,"scrapedAt": "2026-10-24T00:00:00.000Z"}
| Fields | Meaning |
|---|---|
name, category | Place name and available category. |
muid, resultProviderId, appleMapsUrl | Place identifier, provider identifier and Apple Maps link. |
address, streetAddress, city, region, country, postalCode | Available address components. |
latitude, longitude | Available numeric coordinates. |
phone, website | Public contact fields, when supplied. |
hours | Available display strings for weekly hours, or null. |
rating, reviewCount, price | Source rating score, rating count and price description. No review text or guaranteed rating scale. |
photos | Up to ten image URLs when requested and available, otherwise null. |
sourceQuery, sourceUrl | The query or URL that produced the row. |
scrapedAt | Collection time in UTC. |
Unavailable values can be null. Arrays and source coverage vary. Results retain discovery order, not a guaranteed distance, popularity or rating sort. Repeated place identifiers are saved once per run. A RUN_SUMMARY key-value record reports saved and charged places, per-input outcomes, completed and failed inputs, warnings, and whether results are partial. Completed detail batches are saved before more search work starts.
Download your results
Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.
See Apify's download and export guide for the available formats and field options.
Pricing
This Actor uses pay-per-event pricing. start is charged once after initial input validation. item is charged for each saved place.
A valid search with no matches, or a run that later fails, can still incur the start charge.
There are no separate error/status dataset rows to charge as places.
Use maxResults to bound saved places and begin with a small input.
See the live Pricing tab for current rates and applicable charges.
Practical workflows
Build a local business spreadsheet
Search one category around a chosen location with maxResults set to 20. Export the dataset and review name, address, phone, website and appleMapsUrl. Treat missing contact fields as unavailable and verify the source links before outreach.
Enrich a place database
Supply known public place URLs, then match available muid or appleMapsUrl values to your existing records. Keep the source identifier and collection time alongside any updates. Matching records, merging fields and detecting changes between runs are steps in your own workflow.
Tips for best results
- Control the search center. Supply both
latandlngwhen a text location would be ambiguous. CheckRUN_SUMMARYfor location warnings. - Clear unused prefills. When you want only URL lookups or only query searches, remove unwanted example values from the other input list.
- Use a bounded first pass. Try one category with
maxResultsset to 5, then inspect the returned place identities and optional fields before increasing the limit. - Choose the export format for the fields. JSON preserves nested hours and photo URLs. A spreadsheet works well for the place names, addresses and public contacts.
- Keep provenance for later joins. Retain
muid,appleMapsUrl,sourceQueryandscrapedAtwhen available. A later run can return a different set or order.
Limits and caveats
Available records and fields depend on your input and the source. Review the returned data before using it in another system. A successful run does not guarantee that every requested record or optional field was available.
Apple Maps may return fewer places than requested.
Coverage, order and available fields vary by country, query and location.
A confirmed no-match query succeeds with an empty dataset. Successful address or street results without a reusable public place identifier are also recorded as empty outcomes, with address_without_reusable_place_id in RUN_SUMMARY; no place identifier is invented. Duplicate-only inputs can complete without adding rows.
Requests are paced at least two seconds apart, including retries, to reduce sustained upstream load. Larger input batches may reach the shared work deadline; use smaller batches when you need every input completed. Complete place data already supplied by search is reused instead of making unnecessary detail lookups.
An unresolved URL or unusable detail response is recorded as an input failure. Other inputs can still produce results.
If an ordinary work deadline is reached after useful places have been saved, the run succeeds with partial results and a deadline completion reason. PENDING_WORK describes the unfinished inputs, discovered references and remaining search viewports. It is diagnostic information, not automatic continuation. A charge limit stops further work without raising the budget.
A deadline before any useful output, or HTML/503/malformed responses with no successfully completed input, still fails. Confirmed empty responses can succeed without place rows. Essential dataset, billing or outcome-storage errors always fail, even when earlier places were saved.
Automation and integrations
Save your settings for next time
Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.
Run on a schedule
Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.
Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.
Send results to your other tools
Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.
For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.
API usage
Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.
The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.
For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.
cURL
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~apple-maps-places-scraper/runs' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \--data @- <<'JSON'{"queries": ["coffee shops"],"location": "San Francisco, CA","startUrls": [],"maxResults": 5}JSON
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/apple-maps-places-scraper').call({"queries": ["coffee shops"],"location": "San Francisco, CA","startUrls": [],"maxResults": 5});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('fetch_cat/apple-maps-places-scraper').call(run_input={'queries': ['coffee shops'], 'location': 'San Francisco, CA', 'startUrls': [], 'maxResults': 5})print(client.dataset(run['defaultDatasetId']).list_items().items)
API and integrations notes
cURL — starts an asynchronous run. Use the returned run's defaultDatasetId to retrieve items after completion.
MCP and AI agents
You can ask your AI assistant to collect data with Apple Maps Places Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.
Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.
Easier setup with an Apify plugin
If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.
Use Apify AI in Console
Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's Apple Maps Places Scraper. You can describe the data you want and ask questions about the results.
Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.
Choose your assistant
- Claude and Claude Code (Anthropic): Apify setup guide.
- ChatGPT and Codex (OpenAI): Apify setup guides.
- Grok Bot (xAI): Apify plugin guide.
- Gemini CLI (Google): MCP server setup guide. Use the server URL below with the HTTP configuration supported by Gemini CLI.
Connect just this scraper
To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=fetch_cat/apple-maps-places-scraper"}}}
Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.
Use Apify's general server
Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use Apple Maps Places Scraper by Fetch Cat, or give it the identifier fetch_cat/apple-maps-places-scraper.
Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.
Example requests
Give your assistant the inputs it needs along with a request like one of these:
- “Use Fetch Cat’s Apple Maps Places Scraper to collect up to 10 coffee shops around Boston, Massachusetts. Show available addresses, websites and Apple Maps links, and flag missing contact fields.”
- “Retrieve these three public Apple Maps place URLs with Fetch Cat’s Apple Maps Places Scraper, using a shared limit of 3. Keep available place identifiers and collection times so I can match them to my own database.”
- “Search for up to 5 grocery stores around these latitude and longitude coordinates with Fetch Cat’s Apple Maps Places Scraper. Put the available names, addresses and source links in a table, and report run-summary warnings.”
Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.
Pay with x402
If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.
Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.
Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.
Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.
Other ways for agents to pay
Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.
FAQ
How do I search a precise neighborhood?
Supply both lat and lng, use a specific category, and set countryCode to the target market. Coordinates override text location. When using the form for only one mode, clear unwanted prefilled queries or URLs.
Can I use this as an Apple Maps places API?
You can call this run-based Actor through the Apify API. It is an unofficial public-data scraper, not Apple's official API, and offers no guarantee of exhaustive coverage.
Why are phone numbers, photos or ratings missing?
Apple Maps exposes different fields for different place types. includePhotos requests available photo URLs but cannot make missing photos appear. Ratings are source scores, not normalized to a universal scale.
Why did I receive fewer places or no places?
Try a more specific location or a broader category and inspect RUN_SUMMARY warnings. No-match searches differ from failed lookups. Already-saved results may remain available if later work fails.
Related Actors
- Bing Maps Places Scraper — Research places from another map source.
- Google Maps Places Scraper — Collect Google Maps place information.
- Airbnb Listings Scraper — Research accommodation listings.
- Airbnb Reviews Scraper — Collect public Airbnb guest-review text and available ratings for accommodation review research.
- Agoda Reviews Scraper — Collect available Agoda hotel guest-review text, ratings and traveler details.
Support and feedback
For custom additions or integrations, email hello@fetchcat.dev.
Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.
Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.
Tried this scraper? We'd love to hear how it worked for you. Leave a review to help others choose the right tool and help us improve it. Your feedback means a lot to us.
Made with care for curious people, AI agents and the possibilities in data. ♥