Fiber AI
Market intelligence

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.

What it does

  1. Find a place to stay, either across travel-site inventory (Hotels) or on Booking.com specifically, then open one property for the full detail.
  2. 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.
  3. Check a market: one call returns a quote, key stats, company facts, financial statements, news, and a price series.
  4. 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.

OperationHTTPWhat it doesReference
Hotels searchPOST /v1/hotels/searchHotels and vacation rentals for a destination, with rates, ratings, and amenitieshotelSearch
Property detailPOST /v1/hotels/propertyOne hotel or rental: amenities, images, and booking offershotelProperty
Amenity ID listGET /v1/enums/hotels/amenitiesAmenity IDs for hotel search filtersgetHotelAmenities
Brand ID listGET /v1/enums/hotels/brandsBrand group and sub-brand IDs for hotel search filtersgetHotelBrands
Property-type ID listGET /v1/enums/hotels/property-typesProperty-type IDs for hotel search filtersgetHotelPropertyTypes
Booking.com searchPOST /v1/booking/searchBooking.com stays for a destination, with rates, review scores, and availabilitybookingSearch
Booking.com propertyPOST /v1/booking/propertyOne Booking.com property: amenities, photos, score breakdown, house rulesbookingProperty
Flight searchPOST /v1/flights/searchOne-way, round-trip, or multi-city itineraries with fares, timing, and price insightsflightSearch
Flight booking optionsPOST /v1/flights/booking-optionsProviders, fares, baggage rules, and booking links for one itineraryflightBookingOptions
Flight dealsPOST /v1/flights/dealsDiscounted round trips from a departure airport, ranked by savings against the typical priceflightDeals
Flight region listGET /v1/enums/flight-regionsMetro aliases (such as X-NYC) and the airports each one coversgetFlightRegions
Financial instrument lookupPOST /v1/finance/instrumentQuote, stats, fundamentals, news, and price history for a stock, ETF, fund, index, or currency pairfinancialInstrumentLookup
Real estate listingsPOST /v1/real-estate/listingsFor-sale, for-rent, and sold listings in the US and CanadafetchRealEstateListings

Yelp business search, business pages, and reviews have their own operations table on the Yelp page.

Hotels

ProductCoversCreditsRate limit
HotelsSearch a destination, then one property's rates and offers2 per search page or property120/min
FlightsItineraries, booking options, deals2 per search or lookup; region list free120/min
Real estateListings in all 50 US states, D.C., Puerto Rico, and Canada2 per page300/min
Financial instrumentsStocks, ETFs, indexes, funds, currency pairs2 per lookup120/min
YelpBusiness search, business pages, reviews2 per call120/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 needUse
Listings, prices, and review scores exactly as Booking.com shows themBooking.com
A Booking.com URL you already have, opened as structured dataBooking.com property
Several rooms in one search (up to 8)Booking.com
Offers from several booking sources for the same propertyHotels
Vacation rentals, or filters on amenities, brands, price, or guest ratingHotels

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.

ParameterValuesDefault
hotelStarClassesArray of integers 1–5; list every class you wantAll classes
sortByrelevance, lowestPrice, highestRating, mostReviewedrelevance
adults1–302
children0–290
childrenAgesOne age (0–17) per child; the array length must match children—
rooms1–81
currencyCodeISO 4217 (EUR, GBP, …)USD
languageCodeBCP-47 tag (en, fr, …)—
nextPageTokenToken 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.

Required: apiKey and trip. trip.flightType picks the shape:

flightTypeFields
one_waydepartureAirports, arrivalAirports, outboundDate
round_tripThe one-way fields plus returnDate
multi_citysegments: 2–5 legs, each with departureAirports, arrivalAirports, outboundDate

Everything else sits at the top level of the body:

GroupParameters
Passengersadults 1–9 (default 1); children 0–8 (ages 2–11); infantsInSeat 0–8; infantsOnLap 0–8
Cabin and stopstravelClass: economy, premiumEconomy, business, first. maxStops: 0 nonstop, 1 one or fewer, 2 two or fewer
Price and durationmaxPrice (whole currency units), maxFlightDurationMinutes 30–4320
Airlines and connectionsairlines.include / airlines.exclude (two-letter IATA codes); connectingAirports.include / .exclude; layoverDuration.minMinutes / .maxMinutes (30–1440)
BagsminCarryOnBags, minCheckedBags (0–5)
Time of dayoutboundTimeWindow and, for round trips, returnTimeWindow, each with departure / arrival startHour–endHour (0–23)
RankingsortBy: top (overall value, the default), price, departureTime, arrivalTime, duration, emissions. Also onlyShowLowEmissionFlights, hideSeparateTickets, showHidden
LocalecurrencyCode (default USD), searchMarketCountryCode (ISO alpha-3, default USA), languageCode
PagingnextPageToken
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", ...}: set maxPrice, maxStops (0–2), travelClass, and airlines.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:

typeFieldsExample
stockOrEtfticker, exchange{"type": "stockOrEtf", "ticker": "AAPL", "exchange": "NASDAQ"}
mutualFundticker{"type": "mutualFund", "ticker": "VTSAX"}
indexindex: SP_500, DOW_JONES, NASDAQ_100, NASDAQ_COMPOSITE, RUSSELL_1000, RUSSELL_2000, RUSSELL_3000, FTSE_100{"type": "index", "index": "SP_500"}
currencyPairbase, quote; fiat or crypto{"type": "currencyPair", "base": "BTC", "quote": "USD"}
customSymbolsymbol: 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:

  • quote and extendedHoursQuote: price, currency, priceChange (amount, percentage, direction), and quotedAt
  • keyStats: open, high, low, market cap, volume and average volume, P/E, dividend yield, 52-week range, EPS, beta, and shares outstanding
  • companyInfo: description, website, CEO, employee count, founding date, headquarters, and sector
  • financials: income statement, balance sheet, and cash flow, each with quarterly and annual periods of line items and period-over-period change
  • news: recent articles with title, url, source, and publishedAt
  • priceHistory: points with price, currency, at, and volume across your window

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:

FilterShape
listingStatusforSale, forRent, or sold
homeTypesAny 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}
keywordsComma-separated string
featureshasPool, hasGarage, hasAirConditioning, isWaterfront, isSingleStory, hasOpenHouse, includeUnderContract
sortByrelevance, newest, priceAscending, priceDescending, paymentAscending, paymentDescending, bedroomCountDescending, bathroomCountDescending, floorAreaSqFtDescending, lotAreaSqFtDescending, estimatedPriceAscending, estimatedPriceDescending
nextPageTokenToken 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.priceLevel or 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

OperationCreditsRate limit
hotelSearch2 per search page120 / min
hotelProperty2 per property lookup120 / min
getHotelAmenities, getHotelBrands, getHotelPropertyTypesFree120 / min
bookingSearch2 per search120 / min
bookingProperty2 per property lookup120 / min
flightSearch2 per search120 / min
flightBookingOptions2 per lookup120 / min
flightDeals2 per request120 / min
getFlightRegionsFree120 / min
financialInstrumentLookup2 per lookup120 / min
fetchRealEstateListings2 per page300 / 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

On this page