# Pitchup — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Search for campsites across the Pitchup.com network and instantly access detailed information including reviews, real-time availability, and pricing to find and book your perfect camping destination. Filter results by location, amenities, and other criteria to narrow down your options before making a reservation.

**Category:** Travel | **Website:** [pitchup.com/](https://pitchup.com/) | **Docs:** [parse.bot/marketplace/b6b6e9fc-404d-49a4-b04e-4586eb39a7d9/pitchup-com-api](https://parse.bot/marketplace/b6b6e9fc-404d-49a4-b04e-4586eb39a7d9/pitchup-com-api)

Pay-per-use API proxy for Locus Pro. Each call burns credits from your workspace balance.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/credits/pitchup/`
**Auth:** `Authorization: Bearer <LOCUS_CREDITS_SECRET_KEY>` (an `lcr_` secret key or a scoped `lcac_` agent credential)
**Required header:** `Idempotency-Key: <fresh UUID per call>`. A retry with the same key replays the stored result without a new charge.
**Response:** the provider response after any endpoint-specific normalization. `X-Locus-Credits-Charged` carries the charge and `X-Locus-Credits-Balance` the remaining balance. Insufficient credits return `402` before the provider is called.
**Pricing:** estimated costs below are USD. Locus debits the credit equivalent at your workspace rate.

Full call contract: https://docs.paywithlocus.com/api-reference/introduction

> Using a Pay With Locus wallet key (`claw_` prefix)? Wallet routes are documented separately: https://docs.paywithlocus.com/wrapped-apis/for-agents

## Endpoints

### Get booking availability

Check detailed availability and pricing for a specific pitch type over a date range. Returns per-day pricing in multiple currencies, bookable departure dates, minimum stay requirements, and pitch availability counts.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `adults_count` | integer | No | Number of adults. |
| `arrival_date` | string | Yes | Start date in YYYY-MM-DD format. |
| `departure_date` | string | Yes | End date in YYYY-MM-DD format. |
| `dogs_count` | integer | No | Number of dogs. |
| `pitchtype_id` | string | Yes | Pitch type ID (numeric string, obtainable from get_campsite_pitch_types or get_campsite_reviews). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/pitchup/get-booking-availability \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"adults_count":"<integer>","arrival_date":"<string>","departure_date":"<string>","dogs_count":"<integer>","pitchtype_id":"<string>"}'
```

### Get campsite contact info

Get contact information for a specific campsite by slug or numeric ID. Returns name, address, postcode, GPS coordinates, rating, categories, and Pitchup URL. Email addresses are not available. At least one of slug or campsite_id must be provided.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `campsite_id` | string | No | Campsite numeric ID (e.g. '1642'). |
| `slug` | string | No | Campsite slug (e.g. 'monkey-tree-holiday-park'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/pitchup/get-campsite-contact-info \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"campsite_id":"<string>","slug":"<string>"}'
```

### Get campsite details

Get full campsite details from the Nuxt SSR data on the campsite page. Accepts either a short slug or a full path. Short slugs are automatically resolved to their full path via the search API. Returns the raw Nuxt data array which contains comprehensive campsite information.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `slug` | string | Yes | Campsite slug (e.g. 'monkey-tree-holiday-park') or full path (e.g. 'England/South_West/Cornwall/Newquay/monkey-tree-holiday-park'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/pitchup/get-campsite-details \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"slug":"<string>"}'
```

### Get campsite nearby sites

Get nearby campsites for a specific campsite. Returns a list of nearby sites ordered by distance with pricing, ratings, categories, and distance in miles and kilometers.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `slug` | string | Yes | Campsite slug (e.g. 'monkey-tree-holiday-park'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/pitchup/get-campsite-nearby-sites \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"slug":"<string>"}'
```

### Get campsite pitch types

Get pitch types and availability calendar for a campsite. Returns datepicker availability data showing which dates have available pitches and which pitch type IDs are bookable on each date, plus Nuxt SSR data from the campsite page.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `adults_count` | integer | No | Number of adults. |
| `arrival_date` | string | No | Arrival date in YYYY-MM-DD format. |
| `departure_date` | string | No | Departure date in YYYY-MM-DD format. |
| `dogs_count` | integer | No | Number of dogs. |
| `slug` | string | Yes | Campsite slug (e.g. 'monkey-tree-holiday-park'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/pitchup/get-campsite-pitch-types \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"adults_count":"<integer>","arrival_date":"<string>","departure_date":"<string>","dogs_count":"<integer>","slug":"<string>"}'
```

### Get campsite reviews

Get paginated reviews for a specific campsite. Returns reviews with per-category ratings, text (liked/disliked), user info, visit dates, and aggregate statistics including recommendation and revisit percentages.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number. |
| `slug` | string | Yes | Campsite slug (e.g. 'monkey-tree-holiday-park'). |
| `sort` | string | No | Sort order for reviews. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/pitchup/get-campsite-reviews \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","slug":"<string>","sort":"<string>"}'
```

### Get search filters metadata

Get all available search filter options and their counts, including facet keywords (amenities/features), categories (pitch types), location hierarchy, grade filters, and sort options. Useful for building filter UIs.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/pitchup/get-search-filters-metadata \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### List all campsites

List all campsites on Pitchup.com with names and available contact information (address, postcode, GPS coordinates). Supports pagination and country filtering. Email addresses are not available as Pitchup routes all communication through their platform.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `bookable_only` | string | No | Set to 'true' to only return currently bookable campsites. |
| `country` | string | No | Filter by country/region path (e.g. 'England', 'Scotland', 'Wales', 'france', 'spain'). UK uses title case, others lowercase. |
| `limit` | integer | No | Results per page (max 500). |
| `page` | integer | No | Page number (starts at 1). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/pitchup/list-all-campsites \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"bookable_only":"<string>","country":"<string>","limit":"<integer>","page":"<integer>"}'
```

### Search campsites

Search for campsites by location, dates, and other filters. Returns a paginated list of campsites with basic info, ratings, and lead prices. Results are enriched with detail data (name, hierarchy, photos) via a secondary per-result lookup. Without a location, returns all bookable campsites globally.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `adults_count` | integer | No | Number of adults. |
| `arrival_date` | string | No | Arrival date in YYYY-MM-DD format. |
| `country` | string | No | Country ISO code (e.g. 'GB'). |
| `departure_date` | string | No | Departure date in YYYY-MM-DD format. |
| `location` | string | No | Location name or search query (e.g. 'Cornwall', 'Lake District'). |
| `page` | integer | No | Page number. |
| `pitch_types` | string | No | Filter by pitch types (e.g. 'tent', 'caravan', 'motorhome'). |
| `sort` | string | No | Sort order for results. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/pitchup/search-campsites \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"adults_count":"<integer>","arrival_date":"<string>","country":"<string>","departure_date":"<string>","location":"<string>","page":"<integer>","pitch_types":"<string>","sort":"<string>"}'
```

## Next steps

- [All wrapped API providers](https://paywithlocus.com/wapi/index.md): pick another provider.
- [Find and call tools](https://paywithlocus.com/agent/tools.md): price ceilings, async results, and errors.
- [Credits and billing](https://paywithlocus.com/agent/billing.md): what a call costs and how to add credits.
- [Agent docs index](https://paywithlocus.com/agent/index.md): every Locus agent page.