# Apple Maps Scraper 🗺️ \[No Login] — $3.00/1K 💰 (`viralanalyzer/apple-maps-scraper-pro`) Actor

Extract Apple Maps business places, phone numbers, addresses, ratings, websites, and GPS coordinates worldwide without login. Only $3.00/1K places.

- **URL**: https://apify.com/viralanalyzer/apple-maps-scraper-pro.md
- **Developed by:** [viralanalyzer](https://apify.com/viralanalyzer) (community)
- **Categories:** Lead generation, Automation, Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.20 / 1,000 place scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Local Places Scraper 🗺️ Apple Maps Links

> 🔗 [View on Apify Store](https://apify.com/viralanalyzer/apple-maps-scraper-pro) | 🇺🇸 English | [🇧🇷 Português](#português)

***

### 🇺🇸 English

#### 🔎 Where the data comes from — read this first

This actor **does not query an Apple endpoint.** It queries DuckDuckGo's local-business index
(`duckduckgo.com/local.js`), which carries Apple/MapKit fields (`mapkit_name`, `mapkit_address`,
`mapkit_phone`, and an Apple `place_id` when the provider supplies one). Every row carries
`dataSource: "duckduckgo-local"`.

`appleMapsUrl` is **built locally from the coordinates** — a deep link you can open in Apple Maps,
not a URL returned by Apple.

#### Overview

Extract local businesses — name, address, phone, category, coordinates, and rating where the index
states one — for a single search query per run.

#### Input Example

```json
{
  "searchQuery": "Coffee Shops in Seattle, WA",
  "maxResults": 20
}
```

#### Output Example

```json
{
  "placeId": "...",
  "name": "Sample Espresso Bar",
  "category": "Coffee Shop",
  "phoneNumber": "+1 206-555-0192",
  "address": "1912 Sample Pl, Seattle, WA 98101",
  "city": "Seattle",
  "state": "WA",
  "country": "US",
  "rating": null,
  "reviewsCount": null,
  "website": null,
  "latitude": 47.6097,
  "longitude": -122.3422,
  "photos": [],
  "openingHours": null,
  "appleMapsUrl": "https://maps.apple.com/?q=Sample%20Espresso%20Bar&ll=47.6097,-122.3422",
  "dataSource": "duckduckgo-local",
  "scrapedAt": "2026-08-27T21:00:00.000Z"
}
```

Anything the index does not state comes back as `null` or an empty array. `rating` and
`reviewsCount` are frequently `null` — a previous version defaulted them to a perfect 5 stars, which
fabricated a score for every unrated business. That is gone.

#### Input Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `searchQuery` | string | **One** query per run, with city context — e.g. `"Dentists in Miami, FL"` |
| `maxResults` | number | Truncates the single response (default 20) |
| `proxyConfiguration` | object | Apify Proxy options |

### ✅ Capabilities & Limits

Stated up front, so you do not pay a run to find out.

**Built here:** the actor issues **one request and does not paginate.** `maxResults` truncates that
single response — it cannot fetch more than the index returns in one shot. Asking for 5000 does not
produce 5000 places; it produces however many that one response carried.

| Input / feature | Supported | Notes |
|---|---|---|
| Single query with city context | ✅ | `searchQuery`, e.g. `"Hotels in Paris"` |
| Multiple queries per run | ❌ | one query per run |
| Pagination beyond the first response | ❌ | one request, no paging |
| Name, address, phone, category, coordinates | ✅ | passed through when the index states them |
| Rating / review count | ⚠️ | often `null` — never substituted with a default |
| Website, photos, opening hours | ⚠️ | present only when the index carries them |
| Apple place id | ⚠️ | only when the provider supplies one, else `null` — never synthesized |
| `appleMapsUrl` | ⚠️ | a deep link built from the coordinates, not an Apple-issued URL |
| Direct Apple Maps index access | ❌ | the source is DuckDuckGo's local index |

#### FAQ

**Q: Do I need an Apple Developer account?**
A: No — and this actor would not use one. It reads a public local-business index. See the note at the top.

**Q: Is this Apple Maps data?**
A: It is a third-party local index that carries some Apple/MapKit fields. It is not a query against Apple.

**Q: Why did I only get 12 results when I asked for 100?**
A: The actor makes one request and does not paginate. Twelve is what that response contained.

***

### 🇧🇷 Português

#### Visão Geral

Extraia empresas locais — nome, endereço, telefone, categoria e coordenadas — de um índice local público.

**Origem dos dados:** este actor **não consulta um endpoint da Apple.** Ele consulta o índice local do DuckDuckGo (`duckduckgo.com/local.js`), que carrega campos Apple/MapKit em parte dos registros. `appleMapsUrl` é montado localmente a partir das coordenadas. Uma requisição por execução, sem paginação: `maxResults` apenas trunca essa resposta. Avaliação e contagem de reviews vêm `null` quando o índice não as declara.

#### Funcionalidades

- **Índice local público**: pontos de interesse com campos Apple/MapKit quando o provedor os fornece
- **Telefones Verificados**: Telefones de contato formatados
- **Coordenadas Globais**: Latitude e longitude exatas

#### Exemplo de Entrada

```json
{
  "searchQuery": "Coffee Shops in Seattle, WA",
  "maxResults": 20
}
```

#### Exemplo de Saída

```json
{
  "placeId": "apple_map_09124",
  "name": "Pike Place Espresso",
  "category": "Coffee Shop",
  "phone": "+1 (206) 555-0192",
  "address": "1912 Pike Pl, Seattle, WA 98101",
  "city": "Seattle",
  "country": "US",
  "latitude": 47.6097,
  "longitude": -122.3422,
  "scrapedAt": "2026-08-20T21:00:00.000Z"
}
```

#### Parâmetros de Entrada

| Parâmetro | Tipo | Descrição |
|-----------|------|-----------|
| `searchQuery` | string | **Uma** busca por execução, com cidade (ex: `"Dentists in Miami, FL"`) |
| `maxResults` | number | Trunca a resposta única (padrão 20) |

#### Dicas

- Cruze os dados com o Google Maps para validar telefones e endereços

#### Casos de Uso

- **Prospecção B2B** — Encontre empresas verificadas no ecossistema Apple

#### Perguntas Frequentes

**P: Preciso de conta de desenvolvedor Apple?**
R: Não. O Actor extrai dados públicos da web.

***

### 💰 Pricing

This actor uses **Pay Per Event (PPE)** pricing — you pay only per **item scraped** (`place-scraped`). Platform usage is included. See the current price on the **Pricing** panel of this actor's Apify Store page.

***

### 🔗 Related Actors

- [Reclame Aqui Scraper](https://apify.com/viralanalyzer/reclameaqui-scraper)
- [iFood Restaurant Intelligence](https://apify.com/viralanalyzer/ifood-restaurant-intelligence)
- [Instagram Reels Scraper](https://apify.com/viralanalyzer/instagram-reels-scraper)
- [TikTok Viral Scanner](https://apify.com/viralanalyzer/tiktok-viral-scanner)
- [Google Maps BR Scraper](https://apify.com/viralanalyzer/google-maps-br-scraper)
- [Mercado Livre Scraper](https://apify.com/viralanalyzer/mercadolivre-scraper)

***

### 📝 Changelog

- **v1.0.0** (2026-08-20) — Initial release: full extraction, Pay-Per-Event pricing, and automated proxy support

***

### License

ISC © 2026 Viral Analyzer Platform

***

💡 **Need AI analysis on top of this data — sentiment, trend detection and a dashboard, with no API keys to manage?**\
[ViralAnalyzer](https://viralanalyzer.com.br) runs this actor + 42 more data sources with built-in AI. JSON + insights in one call.

# Actor input Schema

## `searchQuery` (type: `string`):

Keyword or business type to search (e.g. 'Dentists in Miami, FL', 'Coffee Shops in London', 'Hotels in Paris').

## `maxResults` (type: `integer`):

Maximum number of places to extract.

## `proxyConfiguration` (type: `object`):

Apify Proxy options.

## Actor input object example

```json
{
  "searchQuery": "Dentists in Miami, FL",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `places` (type: `string`):

Dataset output for Apple Maps Scraper Pro Output

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQuery": "Dentists in Miami, FL"
};

// Run the Actor and wait for it to finish
const run = await client.actor("viralanalyzer/apple-maps-scraper-pro").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "searchQuery": "Dentists in Miami, FL" }

# Run the Actor and wait for it to finish
run = client.actor("viralanalyzer/apple-maps-scraper-pro").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQuery": "Dentists in Miami, FL"
}' |
apify call viralanalyzer/apple-maps-scraper-pro --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,viralanalyzer/apple-maps-scraper-pro"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/5xihCqMDjihQwI0SP/builds/Fl2oza0sPQLTs3Bo4/openapi.json
