list_facilities
Places of a guide (stays, transport, food, parking).
/v1/guides/{productId}/facilitiesPlanning places: kind (hut = a stay, cable_car = transport, activity = tours and activities), type, operator, raw cost and opening text, website, map link, pin, links, booking, conditions, transport and tour details, status, fees, hours, the routes' links and spotKeys (spots it serves directly).
curl "https://sceniq.earth/api/v1/guides/j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2/facilities" \
-H "Authorization: Bearer $SCENIQ_API_KEY"Path parameters
- productIdstring · guide idrequired
Id of the guide (a product of type map). From
list_guidesorcreate_guide.
Returns
200 OK with this object.
- productIdstring · guide idrequired
The guide's id.
Every place, by name.
Show 39 fieldsHide fieldsof Place
- facilityIdstring · place idrequired
The place's id.
- kindstringrequired
hut (a stay),
cable_car(transport), activity (tours), food or parking.hutcable_caractivityfoodparking - typestring or nullrequired
The sub-type (hotel, ferry, restaurant ...), or null for the kind's default.
- spotKeysarray of stringsrequired
The spots it serves directly, in order.
- namestringrequired
The place's name.
- operatorstring or nullrequired
Who runs it.
- descriptionstring or nullrequired
The place in the creator's words.
- costRawstring or nullrequired
The price as the creator states it.
- openRawstring or nullrequired
Season or hours as text.
- websitestring or nullrequired
The official site.
- mapsUrlstring or nullrequired
Map link.
Free label and value rows.
Show 2 fieldsHide fieldsof ExtraProp
- labelstringrequired
The row's label, at most 60 characters.
- valuestringrequired
The row's value, at most 500 characters.
- latnumber or nullrequired
The place's own latitude.
- lonnumber or nullrequired
The place's own longitude.
- osmIdstring or nullrequired
OpenStreetMap reference.
- googlePlaceIdstring or nullrequired
Google place id.
- countrystring or nullrequired
ISO 3166-1 alpha-2 code.
- timeZonestring or nullrequired
IANA time zone, from the pin.
Links with a purpose.
Show 5 fieldsHide fieldsof GuideLink
- kindstringrequired
What the link is for. official and website are the place's own pages; tickets and booking sell entry or rooms; status, timetable and tide carry live conditions; listing, social, authority and app cover the rest.
officialwebsiteticketsbookingstatustimetabletidelistingsocialauthorityappother - labelstringoptional
The link text buyers see, at most 60 characters. Without it the apps name the link by its kind.
- urlstringoptional
An http or https page. http is accepted with a warning.
- valuestringoptional
A channel that is not a URL, at most 200 characters, for example a WeChat mini program and its search term.
- notestringoptional
One line of context shown under the link, at most 300 characters.
- bookingRequiredbooleanrequired
true shows Booking required.
- bookingUrlstring or nullrequired
The page to book on.
- extraKindsarray of stringsrequired
Further roles of the same place.
hutcable_caractivityfoodparking - insideIdstring or null · place idrequired
The place this one sits inside.
- needsParentTicketbooleanrequired
true when entering needs the parent place's ticket.
Conditions shown as chips.
Show 6 fieldsHide fieldsof PlaceConditions
- minAgenumberoptional
Minimum age, a whole number from 1 to 99, shown as Age 16+.
- guestsOnlybooleanoptional
true shows Guests only.
- swimmersOnlybooleanoptional
true shows Swimmers only.
- luggageKgnumberoptional
The luggage limit in kilograms (1 to 200), shown as Luggage up to 15 kg.
- soldAsPackagebooleanoptional
true shows Sold as a package.
- cashOnlybooleanoptional
true shows Cash only.
- costUnitstring or nullrequired
What
costRawcounts.per_personper_nightper_person_nightper_roomper_vehicleper_tripper_hourper_day Parking details.
Show 2 fieldsHide fieldsof ParkingInfo
- fillsBystringoptional
When the lot is usually full, at most 80 characters (10:00, by 9 in summer), shown as Fills by.
- rulestringoptional
What is allowed, at most 300 characters (the only legal pullout).
Transport details.
Show 6 fieldsHide fieldsof TransportInfo
- stopsarray of objectsoptional
Up to 30 stops, in the order buyers see them.
Show 5 fieldsHide fields
- namestringrequired
The stop's name, at most 100 characters. Required.
- latnumberoptional
Latitude of the stop. Give lat and lon together; the stop then links to a map.
- lonnumberoptional
Longitude of the stop.
- registerIdstringoptional
The stop's id in a public register (an NSR or GTFS stop id), at most 80 characters.
- notestringoptional
One line about the stop, at most 200 characters.
- serviceDaysarray of numbersoptional
The weekdays it runs, 1 (Monday) to 7 (Sunday). On fewer than seven days buyers see Runs Mon to Fri.
- timetableUrlstringoptional
The timetable page (http or https), shown as a Timetable link.
- timetableValidFromstringoptional
The first day the timetable applies (YYYY-MM-DD).
- timetableValidUntilstringoptional
The last day the timetable applies (YYYY-MM-DD), not before
timetableValidFrom. Buyers see Timetable valid until that day. - verifyBeforeTravelbooleanoptional
true shows Check the timetable before you travel.
Tour and activity details.
Show 8 fieldsHide fieldsof ActivityInfo
- meetingPointstringoptional
Where to meet, at most 200 characters, shown as Meeting point.
- meetingLatnumberoptional
Latitude of the meeting point. Give
meetingLatandmeetingLontogether. - meetingLonnumberoptional
Longitude of the meeting point.
- durationMinnumberoptional
How long it takes in minutes (1 to 100,000), shown as Duration.
- departuresstringoptional
When it departs, in words, at most 300 characters (daily at 09:00 and 14:00), shown as Departures.
- requiredToSeebooleanoptional
true when a tour is the only way to see the spot (authorized tours at Antelope Canyon), shown as Needed to see the spot.
- authorizedBystringoptional
Who authorizes the operator, at most 120 characters, shown as Authorized by <name>.
- authorizedByUrlstringoptional
The authorizing body's page (http or https), linked from that line.
- gatewayTownstring or nullrequired
The town the place sits in when it is far from the spot on purpose.
A closure notice.
Show 6 fieldsHide fieldsof StatusNotice
- statestringrequired
open,
partly_closed, closed or reopening. reopening with until means it reopens on that day.openpartly_closedclosedreopening - notestringoptional
What is closed or changed, in the creator's words, at most 500 characters.
- sincestringoptional
The day the state began (YYYY-MM-DD).
- untilstringoptional
The day the state is expected to end (YYYY-MM-DD). Must not be before since.
- sourceUrlstringoptional
The page that announced it (http or https).
- checkedOnstringoptional
The day the value was last checked against its source (YYYY-MM-DD).
Fees and tickets.
Show 14 fieldsHide fieldsof Fee
- labelstringrequired
What the fee is for, at most 80 characters (Adult entry, Car park, Boat transfer).
- amountnumberoptional
The price in major units (40, 12.5). Needs currency. Absent when the fee is free or left to the official page.
- currencystringoptional
ISO 4217 code (USD, EUR, ARS). Required with amount.
- freebooleanoptional
true for no charge. Cannot be combined with an amount.
- seeOfficialbooleanoptional
true for a price the guide leaves to the official page on purpose (it changes too often to copy).
- perstringoptional
What one amount pays for: person, vehicle, night, group, entry, day or hour.
personvehiclenightgroupentrydayhour - audiencestringoptional
Who pays this rate: all, adult, child, foreign, domestic, resident, student or senior.
alladultchildforeigndomesticresidentstudentsenior - paidWherestringoptional
Where it is paid: online,
on_siteorin_tour(part of a tour price).onlineon_sitein_tour - paymentstringoptional
How it can be paid:
cash_only,card_onlyorcash_or_card.cash_onlycard_onlycash_or_card - notestringoptional
One line of context, at most 300 characters (free on the first Sunday of the month).
- validFromstringoptional
The first day the price applies (YYYY-MM-DD).
- validUntilstringoptional
The last day the price applies (YYYY-MM-DD). Readiness flags the row after it.
- sourceUrlstringoptional
The page the price comes from (http or https).
- checkedOnstringoptional
The day the value was last checked against its source (YYYY-MM-DD).
Structured opening hours.
Show 8 fieldsHide fieldsof Schedule
Up to 24 bands; the last matching band wins.
Show 11 fieldsHide fieldsof HoursBand
- fromstringoptional
First day of the band as MM-DD. Absent means the start of the year.
- tostringoptional
Last day of the band as MM-DD. May wrap over the new year (from 11-01 to 03-31).
- weekdaysarray of numbersoptional
The weekdays it covers, 1 (Monday) to 7 (Sunday). Absent means every day.
- closedbooleanoptional
true when the place is closed in this band. Otherwise open and close are required.
- openstringoptional
Opening time as HH:MM, or sunrise or sunset.
- closestringoptional
Closing time as HH:MM, or sunrise or sunset.
- openOffsetMinnumberoptional
Minutes around a sun anchor for open (-240 to 240; -60 is an hour before sunrise).
- closeOffsetMinnumberoptional
Minutes around a sun anchor for close (-240 to 240).
- lastEntrystringoptional
Last entry as HH:MM.
- leaveBystringoptional
The time visitors must be out as HH:MM.
- notestringoptional
One line for the band, at most 200 characters.
- specialDaysarray of objectsoptional
Up to 40 days that differ from the bands: a date or a rule, closed or with their own times.
Show 6 fieldsHide fields
- datestringoptional
The day (YYYY-MM-DD). Give a date or a rule.
- rulestringoptional
A recurring day in words, at most 120 characters (first Sunday of the month).
- closedbooleanoptional
true when the place is closed that day.
- openstringoptional
Opening time that day as HH:MM, or sunrise or sunset.
- closestringoptional
Closing time that day as HH:MM, or sunrise or sunset.
- notestringoptional
One line for the day, at most 200 characters.
- slotsobjectoptional
Timed entry: entries every
everyMinminutes from first to last.Show 5 fieldsHide fields
- firststringrequired
The first entry time as HH:MM.
- laststringrequired
The last entry time as HH:MM.
- everyMinnumberrequired
Minutes between entries.
- capnumberoptional
People per slot, when the source states it (1 to 100,000).
- notestringoptional
One line about booking a slot, at most 200 characters.
- validFromstringoptional
The first day these hours apply (YYYY-MM-DD).
- validUntilstringoptional
The last day these hours apply (YYYY-MM-DD).
- sourceUrlstringoptional
The page the hours come from (http or https).
- checkedOnstringoptional
The day the value was last checked against its source (YYYY-MM-DD).
- notestringoptional
A note for the whole schedule, at most 500 characters.
Research evidence, never shown to buyers.
Show 7 fieldsHide fieldsof SourceRef
- urlstringoptional
The page, API or archive copy the facts come from (http or https).
- titlestringoptional
A name for a source without a URL (a park leaflet, a phone call with the operator), at most 200 characters.
- kindstringoptional
page, api, archive, document or other.
pageapiarchivedocumentother - capturedOnstringoptional
The day the source was read (YYYY-MM-DD).
- notestringoptional
What the source says or why it was chosen, at most 500 characters.
- supportsarray of stringsoptional
Which facts it backs, up to 12 entries of at most 60 characters (fees, arrival.operating, lat/lon).
- conflictbooleanoptional
true when this source disagrees with another on the facts it backs. Say which one the value follows in note or
reviewNotes.
- reviewNotesstring or nullrequired
Notes for the creator's review, never shown to buyers.
- factsCheckedOnstring or nullrequired
The day the facts were last checked (YYYY-MM-DD).
- reviewBystring or nullrequired
The day the facts need a new check (YYYY-MM-DD).
- createdAtnumberrequired
When the row was created (Unix time in milliseconds).
- updatedAtnumberrequired
When the row last changed (Unix time in milliseconds).
{
"productId": "j5738kd1q9x2m7v4c6b8n0p3r5t1w9y2",
"facilities": [
{
"facilityId": "km7d4f6g8h0j2k4k6z8x0c2v4b6n8m0q",
"kind": "parking",
"type": "parking_lot",
"spotKeys": [
"01M2Z1G0Y0QG7M2V6N9R3T5W8Y"
],
"name": "Fairy Falls trailhead parking",
"operator": null,
"description": "Gravel lot at the south end of the Fountain Freight Road, room for about 50 cars.",
"costRaw": "Included in the park entrance fee",
"openRaw": "Mid April to early November, with the park roads",
"website": null,
"mapsUrl": "https://maps.apple.com/?ll=44.5156,-110.8326&q=Fairy%20Falls%20Trailhead",
"extraProps": [],
"lat": 44.5156,
"lon": -110.8326,
"osmId": null,
"googlePlaceId": null,
"country": "US",
"timeZone": "America/Denver",
"links": [],
"bookingRequired": false,
"bookingUrl": null,
"extraKinds": [],
"insideId": null,
"needsParentTicket": false,
"conditions": null,
"costUnit": null,
"parking": {
"fillsBy": "09:30 in July and August",
"rule": "Day use only. No overnight parking."
},
"transport": null,
"activity": null,
"gatewayTown": null,
"status": null,
"fees": [],
"schedule": null,
"sources": [],
"reviewNotes": null,
"factsCheckedOn": "2026-09-20",
"reviewBy": null,
"createdAt": 1789895640000,
"updatedAt": 1790586840000
},
{
"facilityId": "km73j9h5g1f7d3s9a5p1p7j3v9y5t1r7",
"kind": "hut",
"type": "hotel",
"spotKeys": [
"01M2Z1G0Y0QG7M2V6N9R3T5W8Y"
],
"name": "Old Faithful Inn",
"operator": "Yellowstone National Park Lodges",
"description": "The 1904 log lodge next to Old Faithful, 15 minutes by car from the Fairy Falls trailhead. Old House rooms sell out first.",
"costRaw": "From 190 USD a night, Old House room with a shared bath (summer 2026)",
"openRaw": "Early May to early October",
"website": "https://www.yellowstonenationalparklodges.com/lodging/summer-lodges/old-faithful-inn/",
"mapsUrl": "https://maps.apple.com/?ll=44.4598,-110.8311&q=Old%20Faithful%20Inn",
"extraProps": [],
"lat": 44.4598,
"lon": -110.8311,
"osmId": null,
"googlePlaceId": null,
"country": "US",
"timeZone": "America/Denver",
"links": [
{
"kind": "booking",
"label": "Book a room",
"url": "https://www.yellowstonenationalparklodges.com/lodging/summer-lodges/old-faithful-inn/"
},
{
"kind": "official",
"label": "Old Faithful area (NPS)",
"url": "https://www.nps.gov/yell/planyourvisit/exploreoldfaithful.htm"
}
],
"bookingRequired": true,
"bookingUrl": "https://www.yellowstonenationalparklodges.com/lodging/summer-lodges/old-faithful-inn/",
"extraKinds": [],
"insideId": null,
"needsParentTicket": false,
"conditions": null,
"costUnit": "per_night",
"parking": null,
"transport": null,
"activity": null,
"gatewayTown": null,
"status": null,
"fees": [],
"schedule": {
"hours": [
{
"closed": true,
"note": "Closed in winter"
},
{
"from": "05-08",
"to": "10-04",
"note": "Open to overnight guests. Check-in from 16:00."
}
],
"validFrom": "2026-05-08",
"validUntil": "2026-10-04",
"sourceUrl": "https://www.yellowstonenationalparklodges.com/lodging/summer-lodges/old-faithful-inn/",
"checkedOn": "2026-09-20"
},
"sources": [
{
"url": "https://www.yellowstonenationalparklodges.com/lodging/summer-lodges/old-faithful-inn/",
"kind": "page",
"capturedOn": "2026-09-20",
"supports": [
"costRaw",
"openRaw",
"schedule"
]
}
],
"reviewNotes": null,
"factsCheckedOn": "2026-09-20",
"reviewBy": "2027-03-01",
"createdAt": 1789895640000,
"updatedAt": 1790586840000
}
]
}Errors
Every error is { error: { code, message } }. Act on the code.
- 400invalid_argumentA required field is missing, a field is unknown, or a value does not match its type (the Convex validator's path and value are in the message).
- 401unauthenticatedThe request carries no key. Send it as Authorization: Bearer sk_sceniq_... (or X-Api-Key).
- 401invalid_api_keyThe key is unknown, revoked or expired.
- 403forbiddenThe key belongs to a creator account that is no longer active.
- 404not_foundThe id does not exist or belongs to another creator. The two answers are identical on purpose, so ids never reveal what exists.
- 429rate_limitedOver a limit: requests per key per minute, per creator per hour, uploads per key per minute, or check_links per guide per hour.
- 500internal_errorAn unexpected failure. The message is hidden on purpose.