Apple Maps Scraper - Phones, Ratings, Hours, Amenities & Photos avatar

Apple Maps Scraper - Phones, Ratings, Hours, Amenities & Photos

Pricing

from $1.99 / 1,000 places

Go to Apify Store
Apple Maps Scraper - Phones, Ratings, Hours, Amenities & Photos

Apple Maps Scraper - Phones, Ratings, Hours, Amenities & Photos

Extract place data from Apple Maps at scale. Get phone numbers, ratings, opening hours, amenities, photos, and full addresses for any business. Search by query + location, paste place URLs, or replay search URLs. 30+ fields per place. Parallel requests. No Apple account needed. $2.99/1,000 places.

Pricing

from $1.99 / 1,000 places

Rating

0.0

(0)

Developer

Zen Studio

Zen Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

28 minutes ago

Last modified

Share

Apple Maps Scraper Pro | Extract Place Data from Apple Maps (2026)

Extract detailed place information from Apple Maps at scale. Search by query + location, paste direct place URLs, or replay search URLs with embedded coordinates. Each place returns 30+ structured fields including phone numbers, ratings, hours, amenities, photos, and full address breakdowns.

No Apple account needed. No browser. Runs 40 concurrent requests.

How to Scrape Apple Maps Places

Three input modes, use any combination:

Search by Query + Location

The most common way. Enter what you're looking for and where. The location is automatically converted to coordinates.

{
"searchQueries": [
{ "query": "coffee shops", "location": "Manhattan, New York" },
{ "query": "dentist", "location": "Shibuya, Tokyo" },
{ "query": "EV charging station", "location": "Berlin, Germany" }
],
"maxResults": 50
}

Each query searches a ~5 km radius around the geocoded location. More specific locations give more accurate results -- "Soho, London" is better than "London".

Scrape Specific Places by URL

Paste Apple Maps place URLs directly. Right-click any place on maps.apple.com and copy the link.

{
"placeUrls": [
"https://maps.apple.com/place?auid=12345678901234567",
"https://maps.apple.com/place?place-id=I918CB7E77B4C7910"
]
}

Replay a Search URL

Copy a search URL from your browser after searching on Apple Maps. The query, coordinates, and zoom level are preserved.

{
"searchUrls": [
"https://maps.apple.com/search?query=coffee+shops&center=40.71,-74.00&span=0.05,0.05"
]
}

The span parameter controls the search radius. Smaller values = tighter area.

Country and Language Change Your Results

These aren't just formatting options. They affect which places Apple Maps returns and how it ranks them.

Country code sets the regional context. Searching "cafe" near Paris with US returns Cafe de Flore, but with FR returns Le Peloton Cafe. Set this to match where your target places are.

Language controls category names, address formatting, and result ranking. Searching near Berlin with de-DE vs en-US can return different first results and categories ("Kaffeehaus" vs "Coffee Shop").

{
"searchQueries": [{ "query": "cafe", "location": "Paris, France" }],
"countryCode": "FR",
"language": "fr-FR"
}

Pricing

Pay-per-event pricing. You only pay for places successfully scraped.

PlanPer 1,000 placesPer place
Regular$2.99$0.00299
Bronze$2.79$0.00279
Silver$2.49$0.00249
Gold$1.99$0.00199

Cost Examples (Regular Plan)

PlacesCost
100$0.30
500$1.50
1,000$2.99

Free tier: 5 runs with no account required.

Budget controls are built in. Set a maximum spend and the Actor stops automatically when the limit is reached.

Input Parameters

ParameterTypeDefaultDescription
searchQueriesarray--Search queries with location. Each entry has query, location, and optional maxResults.
placeUrlsarray--Direct Apple Maps place URLs.
searchUrlsarray--Apple Maps search URLs with embedded coordinates.
countryCodestringUSAffects result ranking and which places are returned.
languagestringen-USAffects category names, addresses, and result ranking.
maxResultsinteger20Max places per search query. Apple typically returns 20-30 per search.
proxyConfigurationobject--Proxy settings. Not required for small runs.

At least one of searchQueries, placeUrls, or searchUrls is required.

Output Example

Each place in the dataset looks like this:

{
"placeId": "11158993369324020443",
"name": "Solid State Coffee",
"placeType": "BUSINESS",
"phone": "+16468961412",
"phoneFormatted": "+1 (646) 896-1412",
"altPhones": [
"+16462624601"
],
"website": "https://solidstatecoffee.com/",
"categories": [
"Coffee Roastery",
"Cafe",
"Coffee Shop"
],
"categoryIds": [
"coffee_roastery",
"cafe",
"coffee_shop"
],
"mapsCategoryId": "dining.cafe.coffee_shop.coffee_roastery",
"mapsAltCategoryId": [],
"address": {
"full": "104 W 71st St, New York, NY 10023, United States",
"short": "104 W 71st St, New York",
"street": "104 W 71st St",
"subThoroughfare": "104",
"thoroughfare": "W 71st St",
"subLocality": "Manhattan",
"city": "New York",
"subAdministrativeArea": "New York County",
"state": "New York",
"stateCode": "NY",
"postalCode": "10023",
"country": "United States",
"countryCode": "US",
"neighborhood": [
"Lincoln Square",
"Manhattan",
"North Hudson",
"Upper West Side",
"Uptown",
"West Side"
],
"areaOfInterest": []
},
"containedIn": "Coffee Roastery \u00b7 Upper West Side, Manhattan",
"location": {
"lat": 40.7766828,
"lng": -73.9797477
},
"timezone": "America/New_York",
"timezoneOffset": "-05:00",
"bounds": {
"region": {
"southLat": 40.775784484715885,
"westLng": -73.9809339691867,
"northLat": 40.77758111528412,
"eastLng": -73.97856143081331
},
"displayRegion": {
"southLat": 40.7721861,
"westLng": -73.9856856,
"northLat": 40.7811794,
"eastLng": -73.9738097
},
"minZoom": 15.003686904907227
},
"roadAccess": [
{
"lat": 40.7768632,
"lng": -73.9796081,
"type": "walking",
"direction": "ENTRY_EXIT"
}
],
"lookAroundAvailable": false,
"rating": {
"score": 91,
"maxScore": 100,
"reviewCount": 32,
"reviewCountFormatted": "32",
"categoryRatings": [
{
"category": "Food & Drink",
"score": 93,
"maxScore": 100,
"reviewCount": 28
},
{
"category": "Atmosphere",
"score": 93,
"maxScore": 100,
"reviewCount": 27
},
{
"category": "Customer Service",
"score": 96,
"maxScore": 100,
"reviewCount": 27
}
]
},
"hours": {
"weekly": [
{
"days": [
"SUNDAY",
"MONDAY",
"TUESDAY",
"WEDNESDAY",
"THURSDAY",
"FRIDAY",
"SATURDAY"
],
"open": "07:00",
"close": "16:00"
}
]
},
"serviceHours": [],
"amenities": [
{
"name": "Accepts Apple Pay",
"amenityId": "crossbusiness.payments.applepay",
"available": true,
"source": "com.yelp"
},
{
"name": "Accepts Contactless Payments",
"amenityId": "crossbusiness.payments.contactless_pay",
"available": true,
"source": ""
},
{
"name": "Street Parking",
"amenityId": "crossbusiness.parking.streetparking",
"available": true,
"source": "com.yelp"
},
{
"name": "Parking Garage",
"amenityId": "crossbusiness.parking.parking_garage",
"available": true,
"source": "com.yelp"
},
{
"name": "Pets Welcome",
"amenityId": "crossbusiness.pets.pets_welcome",
"available": true,
"source": "com.yelp"
},
{
"name": "Accepts Credit Cards",
"amenityId": "crossbusiness.payments.creditcard",
"available": true,
"source": "com.yelp"
}
],
"photos": [
{
"url": "https://ir.4sqi.net/img/general/450x600/697943_CcvUDfts7zacRY3G8wrJ0QvOUnMQRVR-eKPQzcgob-M.jpg",
"width": 308,
"height": 308,
"category": "",
"categoryPhotosAvailable": 16
},
{
"url": "https://ir.4sqi.net/img/general/450x600/105280_eHdbq49snIdQHBcSsoEMAgZSo8jvxhHqe7uCbhGo6no.jpg",
"width": 308,
"height": 308,
"category": "",
"categoryPhotosAvailable": 16
},
{
"url": "https://ir.4sqi.net/img/general/450x600/50735008_IRj1h8l5AX-dC2q6bjK2H5Bl7l9i-m0uMBlyq_f4m6A.jpg",
"width": 308,
"height": 308,
"category": "",
"categoryPhotosAvailable": 16
},
{
"url": "https://ir.4sqi.net/img/general/600x450/1398496475_0jnsrRXB-On7F0AtF7o5mQTGmhxth06Nod3m90M7l44.jpg",
"width": 308,
"height": 308,
"category": "",
"categoryPhotosAvailable": 16
},
{
"url": "https://ir.4sqi.net/img/general/450x600/50735008_14-tp0aJ2eTAmARyRN1TpAhO5qfmdcQUgMFyOwGX7Rc.jpg",
"width": 308,
"height": 308,
"category": "",
"categoryPhotosAvailable": 16
},
{
"url": "https://ir.4sqi.net/img/general/450x600/57966583_2CXD7hmw9vGjubD7GhE3u3-QcThktgwe5aeBbwIvuM0.jpg",
"width": 308,
"height": 308,
"category": "",
"categoryPhotosAvailable": 16
},
{
"url": "https://ir.4sqi.net/img/general/600x450/52040_KcRtEw-GcxWhBFp9iSS9iWz3uooh0qGUIrxUEn0mr9M.jpg",
"width": 308,
"height": 308,
"category": "",
"categoryPhotosAvailable": 16
},
{
"url": "https://ir.4sqi.net/img/general/600x450/52040_5vLk3BMkrW9d6aAva3Wg79XOqIVOUNcbHKJBencn-ZE.jpg",
"width": 308,
"height": 308,
"category": "",
"categoryPhotosAvailable": 16
},
{
"url": "https://ir.4sqi.net/img/general/450x600/50735008_2MFCh0AgX6ej0enbU0tp0fF6vSvcuFHculxcnBxDwDk.jpg",
"width": 308,
"height": 308,
"category": "",
"categoryPhotosAvailable": 16
},
{
"url": "https://ir.4sqi.net/img/general/450x600/50735008_4BjCalpvg31pcwXraO_oJeRqMWE0nOcEunMjdPIX8dU.jpg",
"width": 308,
"height": 308,
"category": "",
"categoryPhotosAvailable": 16
}
],
"quickLinks": [],
"actionData": [],
"claimUrl": "https://businessconnect.apple.com/?claimId=11158993369324020443&utm_source=maps.apple.com",
"isClaimable": true,
"buildingId": "184818100363854062",
"mapsCategoryMuid": "1152921504606870633",
"appleUrl": "https://maps.apple.com/place?auid=11158993369324020443",
"scrapedAt": "2026-02-26T09:26:38.219812+00:00"
}

API Integration

Python

from apify_client import ApifyClient
client = ApifyClient("your_token")
run = client.actor("zen-studio~apple-maps-scraper-pro").call(run_input={
"searchQueries": [
{"query": "coffee shops", "location": "Manhattan, New York"}
],
"countryCode": "US",
"language": "en-US",
"maxResults": 50,
})
for place in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{place['name']}{place['phone']}{place['address']['full']}")

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'your_token' });
const run = await client.actor('zen-studio~apple-maps-scraper-pro').call({
searchQueries: [
{ query: 'coffee shops', location: 'Manhattan, New York' },
],
countryCode: 'US',
language: 'en-US',
maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map(p => `${p.name}${p.phone}`));

Advanced Usage

Search the same category across multiple cities in one run:

{
"searchQueries": [
{ "query": "coworking space", "location": "San Francisco, CA" },
{ "query": "coworking space", "location": "Austin, TX" },
{ "query": "coworking space", "location": "Miami, FL" },
{ "query": "coworking space", "location": "Seattle, WA" }
],
"countryCode": "US",
"maxResults": 100
}

All searches run in parallel (up to 40 concurrent requests).

Per-Query Result Limits

Override the global maxResults for individual queries:

{
"searchQueries": [
{ "query": "restaurant", "location": "Manhattan, New York", "maxResults": 30 },
{ "query": "bar", "location": "Manhattan, New York", "maxResults": 10 }
],
"maxResults": 20
}

Mixed Input Modes

Combine all three input modes in a single run:

{
"searchQueries": [
{ "query": "pharmacy", "location": "Brooklyn, New York" }
],
"placeUrls": [
"https://maps.apple.com/place?auid=5283835567047557515"
],
"searchUrls": [
"https://maps.apple.com/search?query=gym&center=40.68,-73.94&span=0.03,0.03"
],
"maxResults": 30
}

Results are deduplicated automatically.

Localized Data Extraction

Extract place data in the local language for international markets:

{
"searchQueries": [
{ "query": "ramen", "location": "Shinjuku, Tokyo" }
],
"countryCode": "JP",
"language": "ja-JP",
"maxResults": 50
}

Category names, addresses, and ranking will reflect the Japanese market.

Data Export

Export results from the Apify Console in:

  • JSON -- programmatic analysis, database import
  • CSV -- spreadsheets, quick analysis
  • Excel -- reporting, pivot tables
  • XML -- legacy system integration

Nested fields (address, rating, hours) are flattened automatically in tabular formats.

FAQ

How many places can I scrape per search? Apple Maps typically returns 20-30 places per search query. Use multiple queries with different locations to cover larger areas.

Do I need an Apple account? No. No login, no cookies, no authentication required.

How fresh is the data? Data is fetched in real time from Apple Maps. You get whatever Apple Maps currently shows.

What's the rating scale? Apple Maps uses a 0-100 score (not 5-star). A score of 82 roughly corresponds to 4.1 stars. Per-category ratings (food, service, ambiance) are included when available.

Can I scrape places in non-English languages? Yes. Set language to any locale (e.g., de-DE, ja-JP, fr-FR). Category names and addresses will be localized. This also affects which places are returned.

What phone number formats are included? Three fields: phone (raw, e.g., +12125551234), phoneFormatted (human-readable, e.g., +1 (212) 555-1234), and altPhones (array of alternate numbers).

Is there a free tier? Yes. 5 free runs, no credit card required.

What happens when I hit my budget limit? The Actor stops gracefully and keeps all data scraped so far. Nothing is lost.

Disclaimer

Data is collected from publicly available sources and provided "as is" for informational purposes. Users are responsible for compliance with Apple's terms of service and applicable regulations in their jurisdiction.


More places and maps scrapers:

ActorDescriptionPlatform
2GIS Places ScraperExtract places, contacts, and business data from 2GIS2GIS
2GIS Reviews ScraperScrape reviews and ratings from 2GIS places2GIS
Yandex Places ScraperExtract places and business data from Yandex MapsYandex Maps
Yandex Reviews ScraperScrape reviews and ratings from Yandex MapsYandex Maps

Start Scraping Apple Maps Now