BookYogaRetreats APIbookyogaretreats.com ↗
Access yoga retreat listings, search by destination or category, and retrieve full retreat details including pricing, ratings, instructors, and amenities via the BookYogaRetreats API.
What is the BookYogaRetreats API?
This API exposes 4 endpoints for accessing retreat data from BookYogaRetreats.com, a directory of over 2,700 yoga retreat organizers worldwide. Use get_retreat_listings to browse the homepage feed, search_retreats to filter by destination or category, get_retreat_detail to pull full retreat records, or scrape_all_retreats_paginated to bulk-collect structured data with CSV export — all returning fields like rating, price, duration, instructors, and vegetarian availability.
curl -X GET 'https://api.parse.bot/scraper/33981cd6-6f52-4c48-857d-62bc5aed2af6/get_retreat_listings?page=1' \ -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 bookyogaretreats-com-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: BookYogaRetreats SDK — search, browse, and drill into retreat details."""
from parse_apis.bookyogaretreats_api import BookYogaRetreats, RetreatSummary, Retreat, NotFoundError
client = BookYogaRetreats()
# Search for retreats in Bali — limit caps total items fetched
for summary in client.retreats.search(query="bali", limit=5):
print(summary.retreat_title, summary.country, summary.rating, summary.price_rs)
# Drill into a single retreat's full details
listing = client.retreats.list(limit=1).first()
if listing:
detail = listing.details()
print(detail.retreat_title, detail.organizer_name, detail.duration_days, detail.instructors)
# Construct a RetreatSummary by URL and fetch its details
try:
retreat = client.retreatsummary("https://www.bookyogaretreats.com/santhika-retreat-center/12-day-refresh-and-reload-wellness-yoga-retreat-in-lovina-bali").details()
print(retreat.retreat_title, retreat.organizer_name, retreat.veg_friendly)
except NotFoundError as exc:
print(f"Retreat not found: {exc}")
# Browse homepage listings
for listing in client.retreats.list(limit=3):
print(listing.retreat_title, listing.duration_days, listing.airport_transfer_included)
print("exercised: retreats.list / retreats.search / retreatsummary.details")
Fetch paginated retreat listings from the BookYogaRetreats homepage. Returns an array of retreat summaries including pricing, ratings, and availability. Results are ordered by the site's recommended sorting. Each page contains approximately 12 results.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number to fetch for pagination. |
{
"type": "object",
"fields": {
"page": "integer indicating the current page number",
"listings": "array of retreat summary objects"
},
"sample": {
"data": {
"page": 1,
"listings": [
{
"rating": 4.85,
"country": "Peru",
"website": "https://www.bookyogaretreats.com/tambo-ilusion/4-day-amazon-reiki-level-1-initiation-yoga-retreat-in-tarapoto-peru",
"price_rs": "1590",
"source_page": 1,
"availability": "Available",
"veg_friendly": true,
"duration_days": 5,
"no_of_reviews": 20,
"retreat_title": "5 Day Reiki Level 1 and Yoga Retreat in the Peruvian Amazon",
"max_no_of_booking": 1,
"people_interested": null,
"all_meals_included": true,
"instructed_in_english": true,
"airport_transfer_included": true,
"airport_transfer_available": true
}
]
},
"status": "success"
}
}About the BookYogaRetreats API
Browsing and Searching Retreats
get_retreat_listings returns paginated retreat summaries from the BookYogaRetreats homepage, approximately 12 listings per page. Pass an integer page parameter to walk through the full catalog. Each listing in the listings array includes core summary fields. search_retreats accepts a query string — either a destination name such as bali or india, or a category keyword like meditation or vinyasa yoga — and returns matching results in the same paginated format, echoing the original query in the response for traceability.
Retreat Detail Records
get_retreat_detail accepts a full BookYogaRetreats.com retreat URL (obtained from the listings array of either browse or search endpoints) and returns a detailed record. Response fields include retreat_title, country, price_rs (price in USD or local currency), duration_days, rating, no_of_reviews, instructors (an array of name strings), availability, veg_friendly (boolean), and a website URL back to the source page. The rating and no_of_reviews fields may return null for retreats without published reviews.
Bulk Data Collection
scrape_all_retreats_paginated crawls listing pages up to a configurable max_pages limit and visits each retreat's detail page, returning a retreats array of full detail objects alongside a csv string — a complete CSV-formatted export of all collected retreats. This is useful for building offline datasets or populating a database without chaining individual calls. Setting max_pages controls scope and response time tradeoff.
Coverage Notes
Data reflects what is publicly visible on retreat listing and detail pages. Fields like veg_friendly and availability are boolean or string flags drawn from the retreat's published profile. Instructor names are returned as an array, which may be empty for retreats that don't list instructors explicitly. Pricing in price_rs reflects the currency and amount shown on the source page and is not normalized to a single currency.
The BookYogaRetreats API is a managed, monitored endpoint for bookyogaretreats.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bookyogaretreats.com 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 bookyogaretreats.com 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 retreat comparison tool filtering by
country,duration_days, andveg_friendlyfromget_retreat_detail - Aggregate yoga retreat pricing trends by destination using
search_retreatswith location queries - Populate a curated retreat database using
scrape_all_retreats_paginatedwith CSV export - Display instructor profiles for retreat detail pages by consuming the
instructorsarray - Monitor availability status changes for specific retreats by polling
get_retreat_detail - Build a destination-specific retreat finder app using
search_retreatswith category and location queries - Analyze rating and review distributions across retreats using
ratingandno_of_reviewsfields
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does BookYogaRetreats.com have an official developer API?+
What does `get_retreat_detail` return for price, and is it normalized to USD?+
price_rs field returns the price as displayed on the retreat's page, which may be in USD or a local currency. The API does not normalize prices to a single currency, so values may vary in unit depending on how the retreat organizer has listed them.Does the API return guest review text or only aggregate ratings?+
rating (numeric score) and no_of_reviews (review count) from get_retreat_detail, but not individual review text or per-reviewer data. You can fork this API on Parse and revise it to add an endpoint that extracts individual review content from retreat detail pages.Can I filter listings by price range, duration, or vegan options directly in the search endpoint?+
search_retreats accepts a destination or category keyword but does not support structured filter parameters like price range or exact duration in the query input. Filtering on fields like duration_days, price_rs, or veg_friendly needs to be applied client-side after fetching results. You can fork this API on Parse and revise it to add parameter-based filtering if the source page supports it.How many results does each page return, and is there a way to know the total result count?+
get_retreat_listings and search_retreats returns approximately 12 retreat summaries. The response includes the current page number but does not expose a total result count or total page count field. You can detect the last page by checking when the listings array returns fewer than 12 items or an empty array.