# Grab Driver Nearby Scraper (`romy/grab-driver-nearby-scraper`) Actor

Get real-time Grab driver locations and availability for any coordinates. Returns driver count, exact positions, ETA, and bearing data directly from Grab's internal mobile API

- **URL**: https://apify.com/romy/grab-driver-nearby-scraper.md
- **Developed by:** [Romy](https://apify.com/romy) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $35.00 / 1,000 location scrapeds

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/platform/actors/running/actors-in-store#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

## Grab Driver Nearby Scraper

Get **real-time Grab driver locations and availability** for any coordinates. Returns driver count, exact positions, ETA, and bearing data directly from Grab's internal mobile API.

### What does Grab Drivers Nearby do?

This Actor queries Grab's authenticated mobile API (`p.grabtaxi.com`) to retrieve live driver data around one or more locations. For each location you provide, it returns:

- **Available driver count** — how many drivers are in the area
- **Driver coordinates** — exact lat/lng of each nearby driver
- **ETA** — estimated pickup time in seconds (min/max range)
- **Bearing** — direction each driver is heading
- **Position history** — recent trail of each driver's movement

### Why use Grab Drivers Nearby?

- **Driver availability analysis** — monitor how many cars are available across city zones
- **Heatmap data** — map driver density across a city at different times
- **Transport research** — understand ride-hailing supply patterns
- **Location intelligence** — compare availability between business locations

### How to use Grab Drivers Nearby

1. Go to the **Input** tab in Apify Console
2. Provide a list of locations with `latitude` and `longitude`
3. Click **Start** — the Actor fetches live data in seconds
4. Download results from the **Output** tab

### Input

```json
{
  "locations": [
    {"latitude": -6.1754, "longitude": 106.8272},
    {"latitude": -6.2088, "longitude": 106.8123}
  ],
  "service_id": 97
}
```

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `locations` | array | Yes | List of coordinates to check |
| `locations[].latitude` | number | Yes | Latitude |
| `locations[].longitude` | number | Yes | Longitude |
| `service_id` | integer | No | Grab service ID (default: 97 = GrabCar standard Indonesia) |

### Output

Each item corresponds to one location:

```json
{
  "location": {"latitude": -6.1754, "longitude": 106.8272},
  "service_id": 97,
  "drivers_nearby": {
    "availableDrivers": 10,
    "bearing": [0, 62.81, 182, 9.71, 0, 0, 55.46],
    "history": [
      ["-6.176802:106.830039"],
      ["-6.173878:106.830308", "-6.172766:106.830213"]
    ]
  },
  "services_nearby": [
    {
      "serviceIDs": [97],
      "drivers": [
        {"latitude": -6.176802, "longitude": 106.830039},
        {"latitude": -6.177256, "longitude": 106.830569}
      ],
      "eta": {"min": 1, "max": 4, "eta": 115, "quality": 10}
    }
  ]
}
```

### Notes

- **Service ID 97** = GrabCar standard in Indonesia (confirmed working)
- **Service ID 302** = GrabCar standard in Singapore
- Data is real-time — each run fetches live driver positions
- Currently supports car services. Motorcycle (GrabBike) requires a different service ID per region.

### Pricing

This Actor uses **Pay-Per-Event** billing:

| Event | Price |
|-------|-------|
| Actor start | $0.05 (once per run) |
| Per location scraped | $0.035 |

**Example:** 10 locations = $0.05 start + $0.35 = **$0.40 total**

### FAQ

**How fresh is the data?**
Each run fetches live data at the time of execution. Driver positions update every few seconds in the Grab app.

**Which countries are supported?**
All countries where Grab operates: Indonesia, Singapore, Malaysia, Thailand, Vietnam, Philippines, Cambodia, Myanmar.

**Support**
Open an issue on the Issues tab for help or custom solutions.

# Actor input Schema

## `locations` (type: `array`):

List of coordinates to check nearby Grab drivers for.

## `service_id` (type: `integer`):

Grab service ID. Default 97 = GrabCar standard in Indonesia.

## Actor input object example

```json
{
  "locations": [
    {
      "latitude": -6.1754,
      "longitude": 106.8272
    },
    {
      "latitude": -6.2088,
      "longitude": 106.8123
    }
  ],
  "service_id": 97
}
```

# Actor output Schema

## `results` (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 = {
    "locations": [
        {
            "latitude": -6.1754,
            "longitude": 106.8272
        },
        {
            "latitude": -6.2088,
            "longitude": 106.8123
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("romy/grab-driver-nearby-scraper").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 = { "locations": [
        {
            "latitude": -6.1754,
            "longitude": 106.8272,
        },
        {
            "latitude": -6.2088,
            "longitude": 106.8123,
        },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("romy/grab-driver-nearby-scraper").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 '{
  "locations": [
    {
      "latitude": -6.1754,
      "longitude": 106.8272
    },
    {
      "latitude": -6.2088,
      "longitude": 106.8123
    }
  ]
}' |
apify call romy/grab-driver-nearby-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,romy/grab-driver-nearby-scraper"
        }
    }
}

```

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/pFdiZyKhqR7EvU5Hs/builds/KNdrliQmJUhitOKCy/openapi.json
