Market Intelligence APIs
Hotels, Booking.com stays, flights and fare deals, live market quotes, and North American real estate listings, returned as JSON from the same Fiber API.
Beyond people and company data, we built a set of market intelligence APIs for real-world prices and listings: hotel and Booking.com stays, flight itineraries and fare deals, live quotes for stocks, funds, indices and currencies, and real estate listings across the US and Canada. They run on the same authenticated Fiber surface as everything else, so a travel tool, a deal researcher, or an agent can check real-world state without a second vendor contract.
Every call here is synchronous: you send one request and get the result in
the response. There is no start/poll pair. Billing is per call, and the
chargeInfo object on each response is the authoritative record of what you
were charged.
Hotels & vacation rentals
Search a destination for a stay, then open a property for rates, photos, amenities, and booking offers.
Flights
One-way, round-trip, and multi-city fares, booking options for an itinerary, and deals from a departure city.
Real estate listings
Homes for sale, for rent, or sold across the US and Canada, with value and rent estimates.
Financial instruments
Live quote, fundamentals, news, and price history for a stock, ETF, index, fund, or currency pair.
Yelp
Search local businesses on Yelp, open a business page, and read its reviews.
What it does
- Find a place to stay, either across travel-site inventory (Hotels) or on Booking.com specifically, then open one property for the full detail.
- Price a trip: search itineraries, pull booking options for the one you pick, or ask for the best-value round trips out of a city right now.
- Check a market: one call returns a quote, key stats, company facts, financial statements, news, and a price series.
- Pull real estate listings for sale, for rent, or recently sold, filtered by price, size, home type, and features.
Operations
The API reference is the
primary spec. Each operation also has an agent-readable page at
https://api.fiber.ai/ai-docs/<operationId>.md, linked below.
| Operation | HTTP | What it does | Reference |
|---|---|---|---|
| Hotels search | POST /v1/hotels/search | Hotels and vacation rentals for a destination, with rates, ratings, and amenities | hotelSearch |
| Property detail | POST /v1/hotels/property | One hotel or rental: amenities, images, and booking offers | hotelProperty |
| Amenity ID list | GET /v1/enums/hotels/amenities | Amenity IDs for hotel search filters | getHotelAmenities |
| Brand ID list | GET /v1/enums/hotels/brands | Brand group and sub-brand IDs for hotel search filters | getHotelBrands |
| Property-type ID list | GET /v1/enums/hotels/property-types | Property-type IDs for hotel search filters | getHotelPropertyTypes |
| Booking.com search | POST /v1/booking/search | Booking.com stays for a destination, with rates, review scores, and availability | bookingSearch |
| Booking.com property | POST /v1/booking/property | One Booking.com property: amenities, photos, score breakdown, house rules | bookingProperty |
| Flight search | POST /v1/flights/search | One-way, round-trip, or multi-city itineraries with fares, timing, and price insights | flightSearch |
| Flight booking options | POST /v1/flights/booking-options | Providers, fares, baggage rules, and booking links for one itinerary | flightBookingOptions |
| Flight deals | POST /v1/flights/deals | Discounted round trips from a departure airport, ranked by savings against the typical price | flightDeals |
| Flight region list | GET /v1/enums/flight-regions | Metro aliases (such as X-NYC) and the airports each one covers | getFlightRegions |
| Financial instrument lookup | POST /v1/finance/instrument | Quote, stats, fundamentals, news, and price history for a stock, ETF, fund, index, or currency pair | financialInstrumentLookup |
| Real estate listings | POST /v1/real-estate/listings | For-sale, for-rent, and sold listings in the US and Canada | fetchRealEstateListings |
Yelp business search, business pages, and reviews have their own operations table on the Yelp page.
Hotels
| Product | Covers | Credits | Rate limit |
|---|---|---|---|
| Hotels | Search a destination, then one property's rates and offers | 2 per search page or property | 120/min |
| Flights | Itineraries, booking options, deals | 2 per search or lookup; region list free | 120/min |
| Real estate | Listings in all 50 US states, D.C., Puerto Rico, and Canada | 2 per page | 300/min |
| Financial instruments | Stocks, ETFs, indexes, funds, currency pairs | 2 per lookup | 120/min |
| Yelp | Business search, business pages, reviews | 2 per call | 120/min |
Hotels search returns what you'd see on a major online travel agency: hotels or vacation rentals for a destination, priced for your dates and guests, with filters for price, guest rating, star class, amenities, and brands. Property detail adds the full page for one result, including booking offers from several sources with links.
Flow: search → copy propertyToken → property detail, same dates and
guests. The three ID lists (amenities, brands, property types) are free and
feed the search filters; the Hotels page
prints their current values.
Booking.com
When the answer has to come from Booking.com itself (its inventory, its 0–10 review scores, its property URLs), use these two calls instead of the general Hotels API. Search a destination for priced stays, then open any result by its Booking.com URL for amenities, photos, a per-category score breakdown, and house rules.
Booking.com or Hotels?
| You need | Use |
|---|---|
| Listings, prices, and review scores exactly as Booking.com shows them | Booking.com |
| A Booking.com URL you already have, opened as structured data | Booking.com property |
| Several rooms in one search (up to 8) | Booking.com |
| Offers from several booking sources for the same property | Hotels |
| Vacation rentals, or filters on amenities, brands, price, or guest rating | Hotels |
Search
Required: query (a destination such as "Dubrovnik" or "Rome, Italy"),
checkInDate, and checkOutDate as YYYY-MM-DD. Check-out must be at least
one day after check-in.
| Parameter | Values | Default |
|---|---|---|
hotelStarClasses | Array of integers 1–5; list every class you want | All classes |
sortBy | relevance, lowestPrice, highestRating, mostReviewed | relevance |
adults | 1–30 | 2 |
children | 0–29 | 0 |
childrenAges | One age (0–17) per child; the array length must match children | — |
rooms | 1–8 | 1 |
currencyCode | ISO 4217 (EUR, GBP, …) | USD |
languageCode | BCP-47 tag (en, fr, …) | — |
nextPageToken | Token from the previous page | — |
curl -X POST https://api.fiber.ai/v1/booking/search \
-H "Content-Type: application/json" \
-d '{
"apiKey": "YOUR_API_KEY",
"query": "Dubrovnik",
"checkInDate": "2027-06-10",
"checkOutDate": "2027-06-13",
"adults": 2,
"children": 1,
"childrenAges": [7],
"rooms": 1,
"hotelStarClasses": [4, 5],
"sortBy": "highestRating",
"currencyCode": "EUR"
}'Each entry in output.properties carries propertyId, name, and
propertyUrl, plus (when available) address, city, district,
countryCode, coordinates, hotelStarClass, reviewScore (0–10),
reviewCount, thumbnailUrl, and isPreferred. Pricing comes as
totalPrice, nightlyPrice, and originalPrice (each an amount with its
currency), alongside hasFreeCancellation, isSoldOut, and mealPlan. The
envelope adds searchInformation.totalResultCount, currencyCode, and a
nextPageToken for the next page.
Property
Pass the propertyUrl from a search result, or any Booking.com hotel URL
(for example https://www.booking.com/hotel/hr/sumratin-dubrovnik.html), plus
an optional languageCode. There are no dates on this call: it returns the
property page, not rates. Keep the prices from your search.
output.property always includes propertyId, name, propertyUrl,
amenities, photoUrls, and languagesSpoken. When available you also get
description, accommodationType, checkInTime and checkOutTime (24-hour
HH:mm), a scoreBreakdown (staff, facilities, cleanliness, comfort, value,
location, breakfast, and Wi-Fi, each 0–10), houseRules with policies and
payment methods, and isSustainable, plus the same location and rating fields
as search.
Both calls cost 2 credits and allow 120 requests per minute.
Flights
Flight search answers "what can I fly, when, and for how much?" for one-way, round-trip, and multi-city trips. Pick an itinerary and booking options return the providers selling it, with fares, baggage rules, and booking links. Flight deals works the other way around: give it a departure city and it returns round trips priced below what that route usually costs, ranked by savings.
Typical flow: search routes → pick an itinerary → get booking options.
Airports and metro regions
Anywhere a call takes departureAirports or arrivalAirports, you can pass:
- a three-letter IATA code (
JFK) - a comma-separated list (
JFK,LGA,EWR) - a metro alias (
X-NYC) covering every major airport in that city - the stable location ID from the region list (for example
/m/02_286)
The flight region list is free. Each entry returns apiCode (the alias to
pass), name, airportIataCodes, and the stable location ID, so you can turn
"anywhere in New York" into one parameter instead of three searches.
Flight search
Required: apiKey and trip. trip.flightType picks the shape:
flightType | Fields |
|---|---|
one_way | departureAirports, arrivalAirports, outboundDate |
round_trip | The one-way fields plus returnDate |
multi_city | segments: 2–5 legs, each with departureAirports, arrivalAirports, outboundDate |
Everything else sits at the top level of the body:
| Group | Parameters |
|---|---|
| Passengers | adults 1–9 (default 1); children 0–8 (ages 2–11); infantsInSeat 0–8; infantsOnLap 0–8 |
| Cabin and stops | travelClass: economy, premiumEconomy, business, first. maxStops: 0 nonstop, 1 one or fewer, 2 two or fewer |
| Price and duration | maxPrice (whole currency units), maxFlightDurationMinutes 30–4320 |
| Airlines and connections | airlines.include / airlines.exclude (two-letter IATA codes); connectingAirports.include / .exclude; layoverDuration.minMinutes / .maxMinutes (30–1440) |
| Bags | minCarryOnBags, minCheckedBags (0–5) |
| Time of day | outboundTimeWindow and, for round trips, returnTimeWindow, each with departure / arrival startHour–endHour (0–23) |
| Ranking | sortBy: top (overall value, the default), price, departureTime, arrivalTime, duration, emissions. Also onlyShowLowEmissionFlights, hideSeparateTickets, showHidden |
| Locale | currencyCode (default USD), searchMarketCountryCode (ISO alpha-3, default USA), languageCode |
| Paging | nextPageToken |
curl -X POST https://api.fiber.ai/v1/flights/search \
-H "Content-Type: application/json" \
-d '{
"apiKey": "YOUR_API_KEY",
"trip": {
"flightType": "round_trip",
"departureAirports": "X-NYC",
"arrivalAirports": "LHR",
"outboundDate": "2027-05-14",
"returnDate": "2027-05-21"
},
"adults": 2,
"travelClass": "premiumEconomy",
"maxStops": 0,
"sortBy": "price"
}'The response splits itineraries into output.bestFlights and
output.otherFlights. Each itinerary carries segments (airports, times,
airline, aircraft, legroom, delay history, emissions), layovers (with an
overnight flag), totalDurationMinutes, price in whole currency units,
carbonEmissions against the route's typical figure, alsoSoldBy,
operatingCarrier, and the bookingToken you need next.
output.priceInsights tells you whether today's fares are a good buy:
lowestPrice, priceLevel (low, typical, or high), a
typicalPriceRange, and a history of dated price observations.
output.airports resolves the codes you searched into names, cities, and
countries. Pass nextPageToken back to fetch more itineraries.
Booking options
Send the itinerary's bookingToken together with the same trip object
you searched with. Keep currencyCode, searchMarketCountryCode, and
languageCode matched to the search too, or prices can drift from what you
showed the user.
output.bookingOptions comes back best-first (empty when nothing is
bookable). Each option has providerName, flightNumbers, price,
fareType (for example "Basic Economy"), isSplitBooking, bookingLink
(url, plus postData for links that need it), bookingPhone
with any estimatedPhoneServiceFee, fareConditions, and baggageDetails.
The link sends the traveler to the provider; Fiber does not complete the
booking.
Flight deals
Required: departureAirports, a single airport code, metro alias, or stable
location ID. Narrow the results with an optional discovery object in one of
two modes:
{"mode": "freeText", "freeText": "beaches"}: describe the trip in up to 200 characters ("ski towns", "food cities in Europe").{"mode": "filters", ...}: setmaxPrice,maxStops(0–2),travelClass, andairlines.include.
{
"apiKey": "YOUR_API_KEY",
"departureAirports": "X-NYC",
"currencyCode": "USD",
"discovery": {
"mode": "filters",
"maxPrice": 600,
"maxStops": 1,
"travelClass": "economy",
"airlines": { "include": ["B6", "DL"] }
}
}Each entry in output.deals names a destination (name, countryCode,
iataCode, tagline, description, thumbnailUrl) and the trip:
outboundDate, returnDate, tripLengthDays, stopCount,
durationMinutes, airlineName, and airlineCode. The savings fields are
price, typicalPrice, savingsAmount, and savingsPercentage, followed by
a bookingUrl. There is no pagination; one call returns the full ranked list.
Flight search, booking options, and deals each cost 2 credits and allow 120 requests per minute. The region list is free.
Finance
One financial instrument lookup gives an agent everything it needs to answer "how is ACME doing?": a live quote, key statistics, company facts, financial statements, recent news, and a price series in a single payload.
Pick the instrument with instrument.type:
type | Fields | Example |
|---|---|---|
stockOrEtf | ticker, exchange | {"type": "stockOrEtf", "ticker": "AAPL", "exchange": "NASDAQ"} |
mutualFund | ticker | {"type": "mutualFund", "ticker": "VTSAX"} |
index | index: SP_500, DOW_JONES, NASDAQ_100, NASDAQ_COMPOSITE, RUSSELL_1000, RUSSELL_2000, RUSSELL_3000, FTSE_100 | {"type": "index", "index": "SP_500"} |
currencyPair | base, quote; fiat or crypto | {"type": "currencyPair", "base": "BTC", "quote": "USD"} |
customSymbol | symbol: a fully qualified TICKER:EXCHANGE string | {"type": "customSymbol", "symbol": "SPY:NYSEARCA"} |
Use customSymbol when an instrument doesn't fit the other four shapes, for
example a listing on an exchange you already know by its code.
window sets the span of the price history: 1D (default), 5D, 1M,
6M, YTD, 1Y, 5Y, or MAX.
curl -X POST https://api.fiber.ai/v1/finance/instrument \
-H "Content-Type: application/json" \
-d '{
"apiKey": "YOUR_API_KEY",
"instrument": { "type": "stockOrEtf", "ticker": "AAPL", "exchange": "NASDAQ" },
"window": "1M"
}'output contains:
quoteandextendedHoursQuote:price,currency,priceChange(amount, percentage, direction), andquotedAtkeyStats: open, high, low, market cap, volume and average volume, P/E, dividend yield, 52-week range, EPS, beta, and shares outstandingcompanyInfo: description, website, CEO, employee count, founding date, headquarters, and sectorfinancials: income statement, balance sheet, and cash flow, each with quarterly and annualperiodsof line items and period-over-period changenews: recent articles withtitle,url,source, andpublishedAtpriceHistory: points withprice,currency,at, andvolumeacross yourwindow
Each lookup costs 2 credits and the route allows 120 requests per minute.
Real estate
Real estate listings cover all 50 US states, Washington D.C., Puerto Rico, and all 13 Canadian provinces and territories. Ask for homes for sale, for rent, or recently sold in a city or ZIP, filter down to what matters, and get back priced listings with photos, size, time on market, and broker.
Required: location, in one of two shapes:
{"type": "raw", "rawQuery": "78704"}: free text such as a city, ZIP, or address{"type": "structured", "city": "Austin", "stateCode": "TX"}: a city plus its two-letter state or province code
All other filters are optional and sit at the top level of the body:
| Filter | Shape |
|---|---|
listingStatus | forSale, forRent, or sold |
homeTypes | Any of house, condo, townhouse, multi_family, apartment, land, manufactured |
price / rent | {min, max} in the location's local currency |
bedrooms / bathrooms | {min}: 1–5 bedrooms, 1–4 bathrooms |
floorAreaSqFt / lotAreaSqFt | {min, max} in square feet |
yearBuilt | {min, max}, 1800 or later |
parkingSpots | {min} |
keywords | Comma-separated string |
features | hasPool, hasGarage, hasAirConditioning, isWaterfront, isSingleStory, hasOpenHouse, includeUnderContract |
sortBy | relevance, newest, priceAscending, priceDescending, paymentAscending, paymentDescending, bedroomCountDescending, bathroomCountDescending, floorAreaSqFtDescending, lotAreaSqFtDescending, estimatedPriceAscending, estimatedPriceDescending |
nextPageToken | Token from the previous page |
curl -X POST https://api.fiber.ai/v1/real-estate/listings \
-H "Content-Type: application/json" \
-d '{
"apiKey": "YOUR_API_KEY",
"location": { "type": "structured", "city": "Austin", "stateCode": "TX" },
"listingStatus": "forSale",
"homeTypes": ["house", "townhouse"],
"price": { "min": 400000, "max": 750000 },
"bedrooms": { "min": 3 },
"features": { "hasGarage": true },
"sortBy": "newest"
}'output.properties holds the listings, with totalResultCount and a
nextPageToken alongside. Each listing includes address parts (street,
city, state, postalCode), bedroomCount, bathroomCount,
listingStatusLabel, timeOnMarketDays, url, imageUrls,
thumbnailUrl, latitude / longitude, and brokerName, plus estimated
values, tax assessments, floor and lot areas, open-house details, and rental
unit breakdowns where they apply. price comes in both USD and local
currency (price.usd and price.local, each with amount and
currency), so Canadian listings compare cleanly against US ones.
Each page costs 2 credits. This route allows 300 requests per minute; allow up to 30 seconds per request.
Using it effectively
- Search first, then drill down. Hotel property detail and flight booking options both need a token from their search; Booking.com property needs the listing URL. Don't guess identifiers.
- Repeat the stay or trip exactly on the follow-up call. Hotels and flight booking options price against the dates, guests, and currency you send.
- Use metro aliases from the free region list (
X-NYC, not three separate searches) whenever the traveler doesn't care which airport. - Put constraints in typed filters, not in
query. Star classes, stops, cabin, price caps, and home types narrow results before you pay for more pages. - These results reflect live prices. Poll on the cadence you actually need: every page and lookup is a paid call, and HTTP 429 means you've hit the per-route limit.
- The compact JSON pairs naturally with the MCP servers when an agent should do the searching.
Use cases
- Travel apps and agents: "a 4-star stay in Dubrovnik for three nights, then nonstop flights from New York", with booking links for both.
- Fare and rate monitoring: rerun the same flight search or Booking.com
search on a schedule and watch
priceInsights.priceLevelor the nightly price. - Deal newsletters: pull flight deals from each subscriber's home metro
and send the biggest
savingsPercentage. - Market briefs: a daily index and watchlist snapshot with news, built from one lookup per instrument.
- Real estate research: comps by ZIP and home type, rental supply in a city, or recently sold homes for a pricing model.
Cost
| Operation | Credits | Rate limit |
|---|---|---|
hotelSearch | 2 per search page | 120 / min |
hotelProperty | 2 per property lookup | 120 / min |
getHotelAmenities, getHotelBrands, getHotelPropertyTypes | Free | 120 / min |
bookingSearch | 2 per search | 120 / min |
bookingProperty | 2 per property lookup | 120 / min |
flightSearch | 2 per search | 120 / min |
flightBookingOptions | 2 per lookup | 120 / min |
flightDeals | 2 per request | 120 / min |
getFlightRegions | Free | 120 / min |
financialInstrumentLookup | 2 per lookup | 120 / min |
fetchRealEstateListings | 2 per page | 300 / min |
Every page of results is a separate charge, including follow-up pages fetched
with nextPageToken. Trust chargeInfo on each response for the amount
actually charged. See Billing & credits for balances, top-ups,
and per-key limits.
Related: Hotels API · Yelp · MCP · SDKs