# Getaround Availability · Occupancy Calendar (`corent1robert/getaround-availability-monitor`) Actor

Paste Getaround search or car URLs — AM/PM occupancy calendars. Schedule each run to flag occupancy up/down vs last snapshot. No login. Free plan: 20 listings.

- **URL**: https://apify.com/corent1robert/getaround-availability-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 occupancy calendars

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 Availability · Occupancy Calendar

Track **public Getaround occupancy** (AM / PM booked vs open) for a station, a city, or one car. Schedule it: each run compares occupancy % to the last snapshot and flags **up / down**.

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

***

### Also available

| Actor | Use when |
|-------|----------|
| [Getaround Car Listings](https://apify.com/corent1robert/getaround-car-listings-scraper) | One-shot public catalogue |
| [Getaround Price Monitor](https://apify.com/corent1robert/getaround-price-monitor) | Listed prices · Schedule · webhook |
| **This Actor — Availability** | Occupancy calendars · Schedule · webhook |
| [Airbnb Calendar](https://apify.com/corent1robert/airbnb-calendar-availability-scraper) | STR occupancy with the same monitor pattern |

***

### Who is this for?

| You are… | Typical goal | Suggested setup |
|----------|--------------|-----------------|
| **Fleet / P2P investor** | How full is the local supply | Search URL · 1 month · Schedule daily |
| **Revenue / pricing** | One competing car’s booked days | Listing URL · webhook on occupancy moves |
| **Station ops** | Connect cars actually free this week | Pickup **Connect only** |
| **Market research** | Occupancy mix near a gare | Search URL · Overview view |
| **Agency** | Client occupancy alert | Search URL + webhook |
| **Data / BI** | Occupancy time series | API + Schedule |

**What you get by default.** Title, occupancy % (booked AM+PM slots), fully booked days, open days, day-by-day AM/PM flags, listing URL, plus `changeType` when compare is on.

**No owner phone or email.** Getaround does not publish those on public pages.

***

### Quick start

1. On Getaround, search a place **or** open one car page.
2. Copy the browser URL.
3. Paste into **Listing or search URLs**, keep max **20**, click **Start**.
4. Open **Overview**. For a monitor, add a **Schedule**, leave compare on, optionally add a webhook.

First scheduled run is the **baseline** (`changeType: first`).

***

### Ready-made examples

Saved Console tasks (Bordeaux, Paris Nord, one Clio, Lyon Connect). Public Examples after the account publication quota allows.

***

### What it extracts

| Category | Fields |
|----------|--------|
| Identity | `listingKey`, `listingId`, `title`, `listingUrl` |
| Occupancy | `occupancyRate`, `daysTotal`, `daysFullyBooked`, `daysPartOpen`, `daysOpen`, `slotsBooked`, `slotsAvailable` |
| Calendar | `calendarFrom`, `calendarTo`, `occupancyByDay[]` (`date`, `am`, `pm`) |
| Monitor | `previousValue`, `currentValue`, `changeType`, `isChange`, `scrapedAt` |

`occupancyRate` = booked AM/PM slots ÷ known slots over the window. Missing calendars stay `null` and are **not billed**.

***

### Input

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `urls` | array | — | Search and/or car listing URLs |
| `monthsAhead` | string | `1` | Occupancy window from today (`1` / `2` / `3`) |
| `pickupMethod` | string | `all` | `all` / `connect` / `meetup` |
| `detectChanges` | boolean | `true` | Compare occupancy to last snapshot |
| `webhookUrl` | string | empty | Optional POST when occupancy moved |
| `notifyOn` | string | `changes` | `changes` / `always` / `never` |
| `maxListings` | number | `20` | Cap unique cars. **0** = no numerical cap. Free plan still **20 / run** |

**API-only:** `verboseLogs`, `maxItems`, `searchUrls` / `searchUrl`, `notifyOnFirstRun`, `proxyConfiguration`.

#### Input examples

**Station occupancy scan:**

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

**One competing car:**

```json
{
  "urls": [
    "https://fr.getaround.com/location-voiture/bordeaux/renault-clio-1233989"
  ],
  "monthsAhead": "1",
  "detectChanges": true
}
```

***

### How it works

1. Classify each URL as a market search or a single car.
2. Read the public search list when needed.
3. Load each car’s public occupancy calendar (AM / PM).
4. Deduplicate, attach change fields, optional webhook, save snapshot.

***

### Dataset views

| View | Best for |
|------|----------|
| **Overview** | Occupancy %, booked vs open days |
| **Changes** | Previous vs current occupancy |

***

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

HTTP-only. You pay **per unique car with a calendar**, plus a tiny Actor start.

| What | Event | Price |
|------|-------|-------|
| Run start | `apify-actor-start` | **$0.00005** |
| Car with occupancy calendar | `getaround-availability-listing` | **$0.001** |

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

### Is scraping Getaround free?

Free Apify plan: **20 listings per run**. Paid plans follow pay-per-event above.

### Is it legal to scrape Getaround?

This Actor only reads **public occupancy** Getaround shows without an account. No owner contact. Comply with Getaround terms, GDPR and local rules. Not investment advice.

***

### Performance and cost

| Scenario | Cars | Typical time |
|----------|------|----------------|
| One listing | 1 | ~2 s |
| Free-plan 20 | 20 | ~10–20 s |
| Default memory | 512 MB | No browser |

***

### Output sample

```json
{
  "listingKey": "GA-1233989",
  "listingId": "1233989",
  "title": "Renault Clio",
  "occupancyRate": 61.5,
  "daysTotal": 31,
  "daysFullyBooked": 14,
  "daysOpen": 12,
  "daysPartOpen": 5,
  "calendarFrom": "2026-10-01",
  "calendarTo": "2026-10-31",
  "changeType": "first",
  "listingUrl": "https://fr.getaround.com/location-voiture/bordeaux/renault-clio-1233989"
}
```

***

### FAQ

- **Need a Getaround login?** No.
- **Search vs listing URL?** Search = market. Car page = one calendar.
- **Why not 12 months?** The public preview calendar is a short window; 1–3 months matches what the page shows.
- **Pro emails?** Getaround does not publish owner mailboxes. Use occupancy + listed prices instead.

***

### Local development

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

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-availability-monitor/changelog.md

# Actor input Schema

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

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

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

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

You can mix both types.

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

How far the occupancy window goes from today. Public calendars are AM/PM per day.

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

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

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

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

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

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

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

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

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

Stop after this many unique cars. **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"
  ],
  "monthsAhead": "1",
  "pickupMethod": "all",
  "detectChanges": true,
  "notifyOn": "changes",
  "maxListings": 20
}
```

# Actor output Schema

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

Unique cars with occupancy calendars and change flags.

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

Car, occupancy % and change vs last run.

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

Occupancy 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"
    ],
    "monthsAhead": "1",
    "pickupMethod": "all",
    "maxListings": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("corent1robert/getaround-availability-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"],
    "monthsAhead": "1",
    "pickupMethod": "all",
    "maxListings": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("corent1robert/getaround-availability-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"
  ],
  "monthsAhead": "1",
  "pickupMethod": "all",
  "maxListings": 20
}' |
apify call corent1robert/getaround-availability-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,corent1robert/getaround-availability-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/sfGQQh9yH0jm9mmho/builds/WkfDDuEFCAgwNRjuo/openapi.json
