# Cheapest All-Inclusive Google Maps | $0.25/1K Searches (`litescrape/google-maps`) Actor

The most affordable all-inclusive Google Maps scraper: $0.25 per 1k requests. Find local businesses and place details. One search can return many places, with run usage and proxies included.

- **URL**: https://apify.com/litescrape/google-maps.md
- **Developed by:** [Lite Scraper](https://apify.com/litescrape) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.25 / 1,000 successful api requests

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Cheapest All-Inclusive Google Maps | $0.25/1K Searches

The most affordable all-inclusive Google Maps scraper: $0.25 per 1k requests. Find local businesses and place details. One search can return many places, with run usage and proxies included.

Batch local business searches and exact place lookups; one request can return multiple places.

### Price

**$0.25 per 1,000 searches** ($0.00025 per successful API response). A search is one successful results page or source response. Each continuation page counts as another search; individual result rows cost no extra.

Each successful response saved to the run is one paid event, including valid empty responses. Multiple places, reviews, or products in one response do not create additional paid events.

Failed requests are unbilled. Retries and a resumed run do not charge the same request twice. There is no Actor startup fee or separate per-row fee; platform usage during the run is included. Standard Apify charges for post-run storage access may still apply. Payments are handled by Apify; no separate service key or proxy purchase is required.

Free-plan users receive up to 25 successful requests per Apify user per UTC day across this catalog, subject to the service trial allowance. Paid runs respect the input request limit and Apify spending limit.

### Quick start

Use a single input below, or supply `requests` as a list of parameter objects. Top-level API fields are shared defaults, and each batch object overrides them. Identifiers in examples demonstrate the format; use an identifier returned by the matching provider for production work.

```json
{
  "q": "coffee shops",
  "type": "search",
  "ll": "@30.2672,-97.7431,14z",
  "maxRequests": 10,
  "maxPagesPerInput": 1
}
```

### Input parameters

| Field | Type | Required | Meaning |
| --- | --- | --- | --- |
| `q` | string | Optional / conditional | Search query. Use the same parameters for every continuation page. |
| `type` | string | Optional / conditional | Choose search for a query or place for an exact data sequence. |
| `ll` | string | Optional / conditional | Map center and scale, for example @30.2672,-97.7431,14z. |
| `data` | string | Optional / conditional | Google Maps place data sequence. |
| `data_cid` | string | Optional / conditional | Decimal Google CID. Mutually exclusive with other exact-place identifiers. |
| `gl` | string | Optional / conditional | Two-letter country code. |
| `google_domain` | string | Optional / conditional | Supported Google domain, for example google.com. |
| `hl` | string | Optional / conditional | Source language, for example en or en-US. |
| `lat` | number | Optional / conditional | Latitude; most endpoints require lon too. |
| `location` | string | Optional / conditional | Named location. Conflicts with other geography modes on Google search. |
| `lon` | number | Optional / conditional | Longitude; most endpoints require lat too. |
| `m` | number | Optional / conditional | Radius in meters; use z or m with location/coordinates. |
| `max_price` | integer | Optional / conditional | Maximum price band. |
| `min_price` | integer | Optional / conditional | Minimum price band. |
| `min_rating` | number | Optional / conditional | Minimum rating. |
| `nearby` | boolean | Optional / conditional | Search nearby the supplied center. |
| `open_at_hour` | string | Optional / conditional | Native open\_at\_hour parameter. See the source-specific constraints; unsupported combinations return an unbilled validation error. |
| `open_on_day` | string | Optional / conditional | Native open\_on\_day parameter. See the source-specific constraints; unsupported combinations return an unbilled validation error. |
| `open_state` | string | Optional / conditional | Native open\_state parameter. See the source-specific constraints; unsupported combinations return an unbilled validation error. |
| `place_id` | string | Optional / conditional | Exact source place identifier. Use the identifier returned by this provider. |
| `start` | integer | Optional / conditional | Result offset. Prefer automatic pagination over calculating offsets. |
| `timeout` | number | Optional / conditional | Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and returns 503 request\_deadline\_exceeded with retryable=true and a request ID. Omit to retain the standard server deadline. |
| `z` | number | Optional / conditional | Map zoom; use z or m with location/coordinates. |

The source validates conditional parameter combinations. Validation errors do not trigger a paid request event. Provider availability determines which optional result groups appear.

### Batches, pagination, and limits

- `requests`: up to 1,000 input parameter objects in one run.
- `maxRequests`: total successful API requests, including pages; default 100. At that limit the event price is at most $0.025.
- `maxPagesPerInput`: default 1. Increase to follow native continuation links where this endpoint supplies them. No synthetic pagination is invented.
- `maxResults`: maximum dataset rows; default 1,000. Already in-flight requests can complete and be billed, with full JSON saved even if their rows exceed this cap.
- `maxConcurrency`: default 2, maximum 8. Service capacity and trial limits may reduce it.
- `includeArtifacts`: optionally retain available raw source artifacts in this run. Default false.

### Output

The default dataset contains source records with `requestId`, `inputIndex`, `page`, `group`, readable `title`, `url`, `rating`, and `text` fields when available, the complete record in `data`, and `responseUrl`. A successful response without a primary result group gets a response row.

Each `responseUrl` points to a stored response envelope; its `response.body` contains the complete API JSON, including optional modules and pagination. `SUMMARY` reports successful requests, failures, row count, and event charges. `ERRORS` records unsuccessful requests. If every request fails, the run fails with no request-event charges.

Follow-up API links, including pagination and related reviews or products, are Apify request objects: `{ "url": "https://api.apify.com/v2/actors/litescrape~<actor>/runs", "method": "POST", "input": { ... } }`. POST the supplied `input` as JSON to `url` using your own Apify authorization header. Each follow-up starts a new run limited to one successful request; use `maxPagesPerInput` for automatic pagination inside this run. Source website links are unchanged. `search_metadata.json_endpoint` links to the saved Apify response. Available artifact links point to files copied to Apify; unavailable artifact links are omitted.

JSON exports preserve nested fields. Select the flat overview fields for CSV. Artifact manifests use `artifacts-<requestId>` keys and link to copied source files when available. Private run data requires the appropriate Apify access.

### Price comparison

**Lowest price in this 2026-09-20 comparison for place discovery averaging at least 9 unique usable places per billed request, comparing published prices that include run usage and proxies.**

**Illustrative workload:** 1,000 successful requests × 20 usable places per request = 20,000 places. Our total is **$0.25**, equivalent to **$0.0125 per 1,000 places**.

These are calculated prices, not measured scraper runs or guaranteed page yields. Count unique usable source records actually delivered, including the cost of empty responses, continuation pages and lookups needed to obtain the fields you need. An array of request objects does not turn multiple API calls into one billed request.

| Actor | Lowest applicable tier | Published-charge subtotal for this workload | Effective price / 1,000 output units |
| --- | --- | ---: | ---: |
| **Litescrape** | Same request rate on every plan | **$0.25** | **$0.0125** |
| [alfalfa/google-maps-scraper](https://apify.com/alfalfa/google-maps-scraper) ([active prices](https://api.apify.com/v2/acts/alfalfa~google-maps-scraper)) | GOLD | $0.9 | $0.045 |
| [kaix/google-maps-places-scraper](https://apify.com/kaix/google-maps-places-scraper) ([active prices](https://api.apify.com/v2/acts/kaix~google-maps-places-scraper)) | SILVER | $1.20005 + platform/proxy usage | $0.0600025 + platform/proxy usage |
| [solutionssmart/fast-google-map-scraper](https://apify.com/solutionssmart/fast-google-map-scraper) ([active prices](https://api.apify.com/v2/acts/solutionssmart~fast-google-map-scraper)) | FREE | $4.00005 | $0.2000025 |
| [fetch\_cat/google-maps-places-scraper](https://apify.com/fetch_cat/google-maps-places-scraper) ([active prices](https://api.apify.com/v2/acts/fetch_cat~google-maps-places-scraper)) | DIAMOND | $2.1266 | $0.10633 |
| [getanyapi/google-maps-scraper](https://apify.com/getanyapi/google-maps-scraper) ([active prices](https://api.apify.com/v2/acts/getanyapi~google-maps-scraper)) | BRONZE | $1.20005 | $0.0600025 |
| [scrapecraft/google-maps-place-details-identity-resolver](https://apify.com/scrapecraft/google-maps-place-details-identity-resolver) ([active prices](https://api.apify.com/v2/acts/scrapecraft~google-maps-place-details-identity-resolver)) | FREE | $0.60002 | $0.030001 |
| [nosytlabs/google-maps-scraper](https://apify.com/nosytlabs/google-maps-scraper) ([active prices](https://api.apify.com/v2/acts/nosytlabs~google-maps-scraper)) | FREE | $0.20005 + platform/proxy usage | $0.0100025 + platform/proxy usage |

Each competitor gets its lowest published tier, including enterprise tiers, without adding a plan subscription cost. Required compared events use the same tier; known startup charges assume one run and the minimum one billed GB. Unquantified compute/proxy charges, optional enrichment and any omitted additional fees can only increase the displayed competitor subtotal. Output completeness and reliability were not benchmarked.

- **scrapecraft/google-maps-place-details-identity-resolver:** Exact-place resolution, not broad area discovery; retained as a conservative price reference.
- **nosytlabs/google-maps-scraper:** Adds platform usage and requires residential proxies; its $0.01/1K fee is not a complete quote.
- The 20-place calculation is a workload example, not a promised page size. Search with type=search; each continuation page costs another request.
- At 20 places/request, $0.25 buys 20,000 places: $0.0125 per 1,000 places. At 10 places/request the effective price is $0.025/1K; at one place/request it is $0.25/1K.
- Nosyt Labs advertises $0.01/1K results plus platform usage and residential proxies. It has a lower Actor fee. Its total was not measured, so the headline explicitly covers all-inclusive published prices, not an unproven win over variable infrastructure bills.
- The claim covers place discovery, not one-place detail lookups, website email enrichment, reviews, or guaranteed equal field coverage. Exact-place alternatives can cost less for individual lookups.

Cheapest means the lowest calculated price for the stated workload among the named paid Apify Actors in this dated audit. It is not a claim about every Actor, every plan, every workload, or equal output quality. Free/platform-only Actors, monthly rentals and bring-your-own-paid-key wrappers do not establish a comparable fixed total from their Actor fee alone. They may cost less on particular workloads.

The comparison uses the linked active pricing snapshots and public documentation checked on the audit date. Recheck live pricing before relying on a competitor comparison. No provider affiliation or equal-quality claim is implied.

### Support

Use this Actor's Issues tab on Apify and include the run ID plus a description of the unexpected result. Do not post credentials.

This is an independent tool from Litescrape. Provider names identify the source; they do not imply affiliation or endorsement.

# Actor input Schema

## `q` (type: `string`):

Search query. Use the same parameters for every continuation page.

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

Choose search for a query or place for an exact data sequence.

## `ll` (type: `string`):

Map center and scale, for example @30.2672,-97.7431,14z.

## `data` (type: `string`):

Google Maps place data sequence.

## `data_cid` (type: `string`):

Decimal Google CID. Mutually exclusive with other exact-place identifiers.

## `gl` (type: `string`):

Two-letter country code.

## `google_domain` (type: `string`):

Supported Google domain, for example google.com.

## `hl` (type: `string`):

Source language, for example en or en-US.

## `lat` (type: `number`):

Latitude; most endpoints require lon too.

## `location` (type: `string`):

Named location. Conflicts with other geography modes on Google search.

## `lon` (type: `number`):

Longitude; most endpoints require lat too.

## `m` (type: `number`):

Radius in meters; use z or m with location/coordinates.

## `max_price` (type: `integer`):

Maximum price band.

## `min_price` (type: `integer`):

Minimum price band.

## `min_rating` (type: `number`):

Minimum rating.

## `nearby` (type: `boolean`):

Search nearby the supplied center.

## `open_at_hour` (type: `string`):

Native open\_at\_hour parameter. See the source-specific constraints; unsupported combinations return an unbilled validation error.

## `open_on_day` (type: `string`):

Native open\_on\_day parameter. See the source-specific constraints; unsupported combinations return an unbilled validation error.

## `open_state` (type: `string`):

Native open\_state parameter. See the source-specific constraints; unsupported combinations return an unbilled validation error.

## `place_id` (type: `string`):

Exact source place identifier. Use the identifier returned by this provider.

## `start` (type: `integer`):

Result offset. Prefer automatic pagination over calculating offsets.

## `timeout` (type: `number`):

Optional budget for the entire request in seconds, measured from gateway receipt until the response is ready to send. Includes admission, queueing and settlement. Must be greater than 0 and at most 90. On expiry, the call is not billed and returns 503 request\_deadline\_exceeded with retryable=true and a request ID. Omit to retain the standard server deadline.

## `z` (type: `number`):

Map zoom; use z or m with location/coordinates.

## `requests` (type: `array`):

Optional list of parameter objects. Top-level API fields are shared defaults; each object overrides them. Maximum 1,000 inputs.

## `maxRequests` (type: `integer`):

Run-wide cap on successful API requests, including continuation pages. 1,000 requests cost $0.25.

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

Cap exported rows. An in-flight response can still be saved and billed in full. Complete JSON responses remain in storage.

## `maxPagesPerInput` (type: `integer`):

1 returns the first page only. Additional pages follow source continuation links when available; every successful page is a paid request.

## `maxConcurrency` (type: `integer`):

Upper concurrency bound. The service may apply a lower limit for capacity or trial quotas.

## `includeArtifacts` (type: `boolean`):

Copy available raw source artifacts to this run. Availability varies by endpoint; unavailable artifacts do not invalidate a saved JSON response.

## Actor input object example

```json
{
  "q": "coffee shops",
  "type": "search",
  "ll": "@30.2672,-97.7431,14z",
  "maxRequests": 100,
  "maxResults": 1000,
  "maxPagesPerInput": 1,
  "maxConcurrency": 2,
  "includeArtifacts": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

## `errors` (type: `string`):

No description

# 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 = {
    "q": "coffee shops",
    "type": "search",
    "ll": "@30.2672,-97.7431,14z"
};

// Run the Actor and wait for it to finish
const run = await client.actor("litescrape/google-maps").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 = {
    "q": "coffee shops",
    "type": "search",
    "ll": "@30.2672,-97.7431,14z",
}

# Run the Actor and wait for it to finish
run = client.actor("litescrape/google-maps").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 '{
  "q": "coffee shops",
  "type": "search",
  "ll": "@30.2672,-97.7431,14z"
}' |
apify call litescrape/google-maps --silent --output-dataset

```

## MCP server setup

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

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/dghgQ9ZfHo6SZAmxm/builds/MpjnO25xDOJ6bQ26z/openapi.json
