# Getaround Price Monitor · Listed Rate Tracker (`corent1robert/getaround-price-monitor`) Actor

Paste Getaround search or car URLs — listed prices, pickup, ratings. Schedule each run to flag up/down vs last snapshot. No login. Free plan: 20 listings.

- **URL**: https://apify.com/corent1robert/getaround-price-monitor.md
- **Developed by:** [Corentin Robert](https://apify.com/corent1robert) (community)
- **Categories:** Travel, E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 priced car listings

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Getaround Price Monitor · Listed Rate Tracker

Track **listed Getaround prices** for a station, a city, or one competing car. Paste a search URL or a listing URL — get model, listed price, Connect vs meetup, ratings, and a **change flag vs last run**.

**No login. No API key. No Getaround account.** Free plan: **20 listings per run.**

***

### Also available

The Getaround / travel suite — pick the job:

| Actor | Use when |
|-------|----------|
| [Getaround Car Listings](https://apify.com/corent1robert/getaround-car-listings-scraper) | One-shot public catalogue (no schedule snapshot) |
| **This Actor — Price Monitor** | Repeatable listed prices · Schedule · webhook on up/down |
| [Airbnb Price Monitor](https://apify.com/corent1robert/airbnb-price-monitor) | Nightly STR rates with the same monitor pattern |
| [Airbnb Pro Host](https://apify.com/corent1robert/airbnb-professional-host-scraper) | Host business emails by city |

***

### Who is this for?

| You are… | Typical goal | Suggested setup |
|----------|--------------|-----------------|
| **Fleet / P2P investor** | Watch listed €/h or weekend quotes near a gare | Search URL with dates · Schedule daily · **Changes** view |
| **Market research** | Catalogue mix moving week over week | Search URL without dates · `detectChanges` on · max **20** then paid bulk |
| **Travel / station ops** | Instant-book Connect supply at arrival | Pickup **Connect only** · search URL on the station |
| **Revenue / pricing** | One competing car, not the whole map | Paste the **listing URL** · webhook on moves |
| **Agency** | Client alert without a dashboard build | Search URL + webhook (Make / n8n / Slack) |
| **Data / BI** | Time series of listed prices | API + Schedule · Overview then CSV |

**What you get by default.** Title, brand, model, year, listed price (`priceShown`), catalogue hourly / daily labels when no dates, pickup method, ratings, approximate coordinates, public listing URL, plus `changeType` / `previousValue` / `currentValue` when compare is on.

**No owner phone or email** — Getaround does not publish those on public search. Rows without a listed price are exported unbilled.

**Dated 24h quotes.** Search with dates on Getaround first, then paste that URL. No dates on the link = catalogue hourly/daily labels.

***

### Quick start

1. On Getaround, search a place (add dates if you need a quote) **or** open one car page.
2. Copy the browser URL.
3. Open this Actor, paste into **Listing or search URLs**, keep max **20**, click **Start**.
4. Open the **Overview** dataset view. For a real monitor, add an Apify **Schedule**, leave **Compare to previous run** on, optionally add a webhook.

First scheduled run is the **baseline** (`changeType: first`). Later runs flag **up** / **down**.

***

### Ready-made examples

Saved Console tasks (Bordeaux Saint-Jean, Paris Nord, Bordeaux Saturday 24h, Lyon Connect). Public **Examples** landing pages go live after the account publication quota allows.

***

### What it extracts

| Category | Fields |
|----------|--------|
| Identity | `listingKey`, `listingId`, `title`, `brand`, `model`, `year`, `listingUrl` |
| Price | `priceShown`, `priceLabel`, `priceHour`, `priceDayListed`, `durationLabel`, `snapshotKind` (`catalog` or `dated`) |
| Monitor | `previousValue`, `currentValue`, `valueChangeAbs`, `valueChangePct`, `changeType`, `isChange`, `scrapedAt` |
| Ops | `pickupMethod`, `instantBookable`, `connectOpen`, `ratingValue`, `ratingCount` |
| Geo | `latitude`, `longitude`, `searchCity`, `searchAddress`, `countryScope` |

Missing public values stay `null`. The public search list often **stops near 1,000 cars** even when the site shows a higher total.

***

### Input

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `urls` | array | — | Getaround **search** URLs and/or **car** URLs. Mix freely. |
| `pickupMethod` | string | `all` | `all` / `connect` / `meetup` |
| `detectChanges` | boolean | `true` | Compare listed prices to the last snapshot |
| `webhookUrl` | string | empty | Optional POST when a price moved |
| `notifyOn` | string | `changes` | `changes` / `always` / `never` |
| `maxListings` | number | `20` | Cap unique cars. **0** = no numerical cap. Free plan still **20 / run** |

**API-only** (omit from Console): `verboseLogs`, `maxItems` (alias of `maxListings`), `searchUrls` / `searchUrl` (legacy), `notifyOnFirstRun`, `proxyConfiguration`.

#### Input examples

**Scan a station catalogue:**

```json
{
  "urls": [
    "https://fr.getaround.com/search?latitude=44.8265&longitude=-0.555919&address=Gare%20de%20Bordeaux%20Saint-Jean&country_scope=FR"
  ],
  "maxListings": 20,
  "detectChanges": true
}
```

**Weekend 24h quotes (dates already on the URL):**

```json
{
  "urls": [
    "https://fr.getaround.com/search?latitude=44.8265&longitude=-0.555919&address=Gare%20de%20Bordeaux%20Saint-Jean&country_scope=FR&start_date=2026-10-10&start_time=10:00&end_date=2026-10-11&end_time=10:00"
  ],
  "maxListings": 20
}
```

**One competitor car + webhook:**

```json
{
  "urls": [
    "https://fr.getaround.com/location-voiture/bordeaux/renault-clio-1233989"
  ],
  "detectChanges": true,
  "webhookUrl": "https://hooks.example.com/getaround-prices",
  "notifyOn": "changes"
}
```

***

### How it works

1. Classify each pasted URL as a **market search** or a **single car**.
2. Read the **public** list (place and dates come from the search URL) and/or the public car page.
3. Deduplicate by listing id. Attach change fields vs the last named snapshot.
4. Export one row per car. Optional webhook. Save the snapshot for the next Schedule.

***

### Dataset views

| View | Best for |
|------|----------|
| **Overview** | Car, listed price, change type, listing URL |
| **Changes** | Previous vs current, delta, % |

***

### How much does it cost to scrape Getaround prices?

HTTP-only (cheap compute). You pay **per unique priced car**, plus a tiny Actor start. Platform usage is paid by the user. Rows without a listed price are **not** billed.

| What | Event | Price |
|------|-------|-------|
| Run start | `apify-actor-start` | **$0.00005** |
| Unique car with a listed price | `getaround-price-listing` | **$0.001** |

| Scenario | Cars | Approx. PPE |
|----------|------|-------------|
| First run / Free plan cap | 20 | **~$0.02** |
| Station sample | 200 | **~$0.20** |
| Large public list (often ~1,000) | 1,000 | **~$1.00** |

No residential proxy required for this public list. Free Apify plan: **20 billed rows per run**.

### Is scraping Getaround free?

The Actor has a **Free-plan cap of 20 listings per run**. Paid Apify plans follow pay-per-event above. Getaround itself is not billed through this Actor.

### Is it legal to scrape Getaround?

This Actor only reads **public listings** Getaround shows without an account. There is **no owner contact**. Use of the data must comply with Getaround terms, GDPR and your local rules. This is not investment advice.

***

### Performance and cost

| Scenario | Cars | Typical time (cloud) |
|----------|------|----------------------|
| Try / 5 listings | 5 | ~2 s |
| Free-plan 20 | 20 | ~5 s |
| ~1,000 public list | ~1,000 | a few minutes |

Default memory **512 MB**. No browser.

***

### Output sample

```json
{
  "listingKey": "GA-1233989",
  "listingId": "1233989",
  "title": "Renault Clio (2021)",
  "brand": "Renault",
  "model": "Renault Clio",
  "year": "2021",
  "priceHour": 5,
  "priceDayListed": 38,
  "priceShown": 5,
  "pickupMethod": "Getaround Connect",
  "instantBookable": true,
  "ratingValue": 4.75,
  "ratingCount": 63,
  "listingUrl": "https://fr.getaround.com/location-voiture/bordeaux/renault-clio-1233989",
  "changeType": "first",
  "isChange": false,
  "previousValue": null,
  "currentValue": 5,
  "searchCity": "Gare de Bordeaux Saint-Jean",
  "snapshotKind": "catalog",
  "scrapedAt": "2026-10-01T12:00:00.000Z"
}
```

***

### FAQ

- **Need a Getaround login?** No.
- **Search vs listing URL?** Search = market snapshot. Car page = one listing.
- **Where do dates live?** On the Getaround search URL you paste — there is no extra date picker.
- **Try only returned 20 cars?** Free plan and the default cap. Paid plans: set `maxListings` to `0` for the public list.
- **Webhook on first run?** Off by default (`notifyOnFirstRun` API-only) so the baseline does not page you.

***

### Local development

```
cd getaround-price-monitor
npm install && npm test
apify run --input-file=.actor/INPUT.json
```

`.actor/INPUT.json` matches Console Try. Root `input.json` is a local preset — **`apify run` validates `storage/.../INPUT.json` first** unless you pass `--input-file`.

Contact <corentin@outreacher.fr> if you need a custom scraper or tailored automation.

# Changelog

This Actor's version history is a separate document: https://apify.com/corent1robert/getaround-price-monitor/changelog.md

# Actor input Schema

## `urls` (type: `array`):

**What to paste here depends on your goal:**

**I want to monitor a specific car**
Paste the listing URL: `https://fr.getaround.com/location-voiture/bordeaux/renault-clio-1233989`

**I want to scan a market** (a gare, a city…)
Paste a search URL from the Getaround results page.

You can mix both types.

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

Keep Connect, meetup-only, or every public listing.

## `detectChanges` (type: `boolean`):

When on, each run compares listed prices to the last snapshot and flags up/down. First run is the baseline.

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

POST JSON `{ changeCount, changes }` when a listing moves. Slack / Make / n8n inbound URL. Empty = dataset flags only.

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

Only when a price moved, every run, or never. Ignored when the webhook URL is empty.

## `maxListings` (type: `integer`):

Stop after this many unique cars across all pasted URLs. **0 = no numerical cap** (the public list may still stop near 1,000 per search).

## Actor input object example

```json
{
  "urls": [
    "https://fr.getaround.com/search?latitude=44.8265&longitude=-0.555919&address=Gare%20de%20Bordeaux%20Saint-Jean&country_scope=FR"
  ],
  "pickupMethod": "all",
  "detectChanges": true,
  "notifyOn": "changes",
  "maxListings": 20
}
```

# Actor output Schema

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

All exported unique cars with listed prices and change flags.

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

Car, listed price and change vs last run.

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

Up / down vs the previous snapshot.

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

Plain-text progress for this run.

# 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 = {
    "urls": [
        "https://fr.getaround.com/search?latitude=44.8265&longitude=-0.555919&address=Gare%20de%20Bordeaux%20Saint-Jean&country_scope=FR"
    ],
    "pickupMethod": "all",
    "maxListings": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("corent1robert/getaround-price-monitor").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 = {
    "urls": ["https://fr.getaround.com/search?latitude=44.8265&longitude=-0.555919&address=Gare%20de%20Bordeaux%20Saint-Jean&country_scope=FR"],
    "pickupMethod": "all",
    "maxListings": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("corent1robert/getaround-price-monitor").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 '{
  "urls": [
    "https://fr.getaround.com/search?latitude=44.8265&longitude=-0.555919&address=Gare%20de%20Bordeaux%20Saint-Jean&country_scope=FR"
  ],
  "pickupMethod": "all",
  "maxListings": 20
}' |
apify call corent1robert/getaround-price-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,corent1robert/getaround-price-monitor"
        }
    }
}
```

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/vQPsdb2mfKBfA15we/builds/IycdRg9AsDRHGaG0o/openapi.json
