Unyoked APIunyoked.co ↗
Search Unyoked cabin listings across Australia, New Zealand, and the UK. Get nightly price, availability, amenities, capacity, and booking URLs via one API endpoint.
What is the Unyoked API?
The Unyoked API exposes one endpoint — search_cabins — that returns the full catalog of off-grid cabin listings for a given region, covering up to 10 response fields per cabin including nightly price, availability status, guest capacity, and a direct listing URL. It supports Unyoked's three operating regions: Australia, New Zealand, and the United Kingdom, making it straightforward to surface real-time cabin data programmatically.
curl -X GET 'https://api.parse.bot/scraper/accb682e-4430-4421-9f8b-bf528e51a3e0/search_cabins?region=Melbourne' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace unyoked-co-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Unyoked cabin search — find off-grid stays by region."""
from parse_apis.unyoked_co_api import Unyoked, Region, InputFormatInvalid
client = Unyoked()
# Browse Melbourne cabins, capped at 10 results.
for cabin in client.cabins.search(region=Region.MELBOURNE, limit=10):
status = "available" if cabin.is_available else "unavailable"
print(f"{cabin.name} ({cabin.location}, {cabin.state}) — {cabin.currency} {cabin.nightly_price}/night — {status}")
# Drill into one Sydney cabin for amenity details.
try:
cabin = client.cabins.search(region=Region.SYDNEY, limit=1).first()
except InputFormatInvalid as e:
print(f"Invalid region input: {e.message}")
cabin = None
if cabin is not None:
print(f"\n{cabin.name}: capacity {cabin.capacity}, fireplace={cabin.has_fireplace}, hot_tub={cabin.has_hot_tub}")
print(f" Amenities: {', '.join(cabin.amenities)}")
print(f" Listing: {cabin.listing_url}")
print("\nexercised: cabins.search (Melbourne + Sydney)")
Search off-grid cabin listings by region. Returns all cabins in the selected region with name, location, nightly price, availability for today's date, amenities list, guest capacity, and listing URL. Amenity highlights (fireplace, hot tub, sauna, deck) are flagged as boolean fields for quick filtering. Pricing is based on 2 adults for 1 night starting today. Makes two upstream requests per call: one for cabin details and one for rates/availability.
| Param | Type | Description |
|---|---|---|
| regionrequired | string | Region to search for cabins. Case-insensitive. |
{
"type": "object",
"fields": {
"total": "Total number of cabins in the region",
"cabins": "Array of cabin objects with id, name, alias, location, region, country, state, nightly_price, currency, is_available, capacity, amenities, has_fireplace, has_hot_tub, has_sauna, has_deck, description, listing_url, latitude, longitude",
"region": "The region searched"
},
"sample": {
"data": {
"total": 25,
"cabins": [
{
"id": 147580,
"name": "Aprilla",
"alias": "aprilla",
"state": "VIC",
"region": "Melbourne",
"country": "Australia",
"capacity": 2,
"currency": "AUD",
"has_deck": false,
"latitude": "-38.733914791416",
"location": "Johanna",
"amenities": [
"Bar Fridge",
"Books and Card Games",
"Campfire Jaffle Maker",
"Cast iron pans",
"Clean Drinking Water",
"Coffee and Tea",
"Composting Toilet",
"Fan",
"Gas Stove",
"Hot Shower",
"Kitchen Equipment",
"Oil, Salt and Pepper",
"Outdoor Shower",
"Pet Friendly",
"Pots and Pans",
"Private and secure property",
"Queen Bed",
"Self Check-in",
"Shower - Outdoor",
"Some Reception",
"Tapedeck or CD Player",
"Woodfired Heater",
"Woodfired Heating",
"Yoga Mats"
],
"has_sauna": false,
"longitude": "143.41812316758",
"description": "Nestled on the picturesque Great Ocean Road, Aprilla is an escape from your overflowing inbox. Wake to waves, koalas in trees, and the sea breeze flowing in from the coast.",
"has_hot_tub": false,
"listing_url": "https://www.unyoked.co/Aprilla",
"is_available": false,
"has_fireplace": true,
"nightly_price": 323
}
],
"region": "Melbourne"
},
"status": "success"
}
}About the Unyoked API
What the API Returns
The search_cabins endpoint accepts a single required parameter, region (case-insensitive string), and returns a JSON object containing a total count, the searched region string, and a cabins array. Each cabin object includes id, name, alias, location, region, country, state, nightly_price, currency, is_available, and capacity. The is_available boolean reflects availability for today's date, so you can filter in real time for cabins that can be booked immediately.
Amenity Flags
Each cabin record also carries a set of boolean amenity flags for notable features: fireplace, hot tub, sauna, and deck. These are structured as discrete fields rather than a free-text list, so you can filter or sort cabins by specific features without parsing strings. The amenities array provides the full list of included features beyond those four highlights.
Regional Coverage
Valid region values map to Unyoked's three active markets: Australia, New Zealand, and the United Kingdom. The country and state fields on each cabin give finer geographic context within those regions. Each cabin object includes a listing URL, linking directly to its Unyoked booking page.
The Unyoked API is a managed, monitored endpoint for unyoked.co — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when unyoked.co changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official unyoked.co API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a cabin search widget filtered by amenity flags like hot tub or sauna for travel planning apps
- Track nightly price changes across Unyoked's Australian and UK markets over time
- Display real-time availability for today's date to surface last-minute bookable cabins
- Compare guest capacity across listings to match groups of different sizes to available cabins
- Aggregate off-grid accommodation options by state or country for regional travel guides
- Alert users when a specific cabin type (e.g. fireplace + deck) becomes available in a region
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Unyoked provide an official developer API?+
What does the `is_available` field represent, and how current is it?+
is_available boolean indicates whether a cabin is available for booking on today's date. It reflects current availability at the time the request is made, not a future date range. For planning further ahead, the field would need to be re-queried on the intended date.Can I search by specific amenity or filter by price range within the API?+
search_cabins endpoint accepts only a region parameter — there is no server-side filtering by amenity, price, or capacity. Filtering must be applied client-side against the returned cabins array using fields like nightly_price, capacity, and the boolean amenity flags. You can fork this API on Parse and revise it to add server-side filtering parameters.Does the API support availability lookups for future dates?+
is_available field only reflects today's date. Future date availability is not exposed through the current endpoint. You can fork this API on Parse and revise it to add a date parameter for forward-looking availability queries.