Liberal Gazi APIliberalgazi.gr ↗
Access accommodation units, amenities, photos, and gallery data for Liberal Gazi Athens guesthouse via 3 structured JSON endpoints.
What is the Liberal Gazi API?
The Liberal Gazi Athens API exposes 3 endpoints covering every accommodation unit, room-level details, and the property's full photo gallery for the Liberal Gazi guesthouse in Athens. list_accommodations returns all units in a single call with slugs, sizes, capacities, and bed configurations. get_accommodation delivers per-unit amenities, description text, images, and booking links. list_gallery_photos returns the complete gallery with native pixel dimensions and captions.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/76c8cbe9-d4dc-4ebd-a675-be014e47f880/list_accommodations' \ -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 liberalgazi-gr-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: Liberal Gazi Athens — list rooms, drill into details, browse gallery."""
from parse_apis.liberalgazi_gr_api import LiberalGazi, InputNotFound
client = LiberalGazi()
# Browse accommodation types to see what the property offers.
for room_type in client.accommodation_types.list(limit=5):
print(f"{room_type.name}: {room_type.size_sqm}m², up to {room_type.max_persons} guests, {room_type.unit_count} units")
# List individual unit summaries and drill into the first one's full detail.
unit = client.accommodation_summaries.list(limit=1).first()
if unit is not None:
detail = unit.details()
print(f"\n{detail.name} ({detail.slug})")
print(f" Size: {detail.size_sqm}m² Beds: {detail.beds} Max: {detail.max_persons}")
print(f" Description: {detail.description}")
print(f" Amenities: {', '.join(detail.amenities)}")
print(f" Photos: {len(detail.images)}")
if detail.booking_url:
print(f" Book at: {detail.booking_url}")
# Point lookup by slug discovered above.
if unit is not None:
try:
room = client.accommodations.get(slug=unit.slug)
print(f"\nLooked up: {room.name}")
except InputNotFound:
print("Room not found")
# Browse the property's public photo gallery.
for photo in client.photos.list(limit=3):
print(f"{photo.title} — {photo.width}x{photo.height} {photo.image_url}")
print("\nexercised: accommodation_types.list / accommodation_summaries.list / details / accommodations.get / photos.list")
Returns every accommodation unit listed on the property's accommodation page in one request, plus a roll-up of the distinct accommodation types (name, size, capacity, bed configuration, number of units). Each unit carries the slug consumed by get_accommodation. The site lists all units on a single page, so there is no pagination.
No input parameters required.
{
"type": "object",
"fields": {
"units": "array of individual units: slug (identifier for get_accommodation), name, url (public page), size_sqm, max_persons, beds",
"total_units": "integer count of units",
"accommodation_types": "array of distinct room types: name, size_sqm (integer, square metres), max_persons (integer), beds (bed configuration text), unit_count (integer number of units of that type)"
},
"sample": {
"data": {
"units": [
{
"url": "https://www.liberalgazi.gr/accommodation-athens/economy-double-room25",
"beds": "1 double bed",
"name": "Economy Double Room",
"slug": "economy-double-room25",
"size_sqm": 12,
"max_persons": 2
},
{
"url": "https://www.liberalgazi.gr/accommodation-athens/penthouse-apartment",
"beds": "1 double bed and 1 sofa bed",
"name": "Penthouse Apartment",
"slug": "penthouse-apartment",
"size_sqm": 20,
"max_persons": 3
}
],
"total_units": 27,
"accommodation_types": [
{
"beds": "1 double bed",
"name": "Economy Double Room",
"size_sqm": 12,
"unit_count": 12,
"max_persons": 2
},
{
"beds": "1 double bed and 1 sofa bed",
"name": "Penthouse Apartment",
"size_sqm": 20,
"unit_count": 1,
"max_persons": 3
}
]
},
"status": "success"
}
}About the Liberal Gazi API
Accommodation Inventory
list_accommodations requires no inputs and returns the full inventory in one call. The response includes a units array — each element carries a slug, name, url, size_sqm, max_persons, and beds field — plus a total_units integer and an accommodation_types array that groups distinct room types by name, size, capacity, and bed configuration. The slug from each unit is the identifier passed to the detail endpoint.
Unit Detail
get_accommodation accepts a single required slug parameter (lowercase letters, digits, and hyphens) sourced from list_accommodations. It returns the unit's full description text, amenities array, size_sqm, max_persons, beds, an images array of permanent full-size URLs ordered with the main photo first, a booking_url for direct reservations (or null when absent), and the public url. Passing an unrecognised slug returns a stale_input error rather than a 404.
Photo Gallery
list_gallery_photos takes no inputs and returns the property's entire public gallery as a single, unpaginated response. Each entry in the photos array includes image_url, title (caption), and native pixel width and height integers. The total field gives the count of photos returned.
The Liberal Gazi API is a managed, monitored endpoint for liberalgazi.gr — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when liberalgazi.gr 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 liberalgazi.gr 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 room-comparison tool using size_sqm, max_persons, and beds from list_accommodations.
- Populate a booking widget with per-unit booking_url and amenities from get_accommodation.
- Generate an automated photo slideshow using the images array returned by get_accommodation.
- Create a property brochure by combining gallery photos from list_gallery_photos with caption and dimension metadata.
- Monitor inventory changes by diffing total_units from repeated list_accommodations calls.
- Display a filterable accommodation grid by accommodation_types with capacity and bed configuration data.
- Feed a travel aggregator with unit descriptions, sizes, and direct booking links per room.
| 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.