API reference
Markets
Market-wide rate indices across destinations.
BrowseMarkets
Get the marketplace summary
GET/
- Access
- Key optional. A key or token personalises the answer.
- Rate limit
- 100 requests per second (the default)
Public counts for everyone; capacity, ASR, ACD and average price only for signed-in callers.
Response 200
datarequiredobject
routesrequiredinteger · data.routes
destinationsrequiredinteger · data.destinations
voiceRoutesrequiredinteger · data.voiceRoutes
smsRoutesrequiredinteger · data.smsRoutes
hasRoutesrequiredboolean · data.hasRoutes
hasActivityDatarequiredboolean · data.hasActivityData
capacityinteger · data.capacity
avgAsrnumber | null · data.avgAsr
measuredAsrnumber | null · data.measuredAsr
measuredAsrSampleinteger · data.measuredAsrSample
avgAcdnumber | null · data.avgAcd
avgPricenumber | null · data.avgPrice
Display figuretopMoversrequiredany[] · data.topMovers
marketStatusrequiredstring · data.marketStatus
asOfrequiredstring (date-time) · data.asOf
Start of the 24h activity window
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
List destinations with live routes and their lowest rates
GET/
- Access
- Public. No key needed.
- Rate limit
- 100 requests per second (the default)
Public. Every destination with at least one live, buyer-visible route, per product: slug, route count and lowest rate. Pass type for one product; without it both voice and sms lists are returned. Rebuilt at most every 10 minutes (Cache-Control: public, max-age=600). Rates are the sellers' list prices before the platform fee.
Parameters
typequery · string
One of voice, sms
Response 200
datarequiredobject
voiceobject[] · data.voice
slugrequiredstring · data.voice[].slug
URL slug from the country name, e.g. "pakistan"countryrequiredstring · data.voice[].country
countryCoderequiredstring · data.voice[].countryCode
E.164 country calling code, digits onlyroutesrequiredinteger · data.voice[].routes
Live routes that price at least one number typelowestrequiredstring · data.voice[].lowest
Lowest mobile, fixed or country-wide ratelowestBandrequiredstring · data.voice[].lowestBand
mobileandfixed: rate-sheet rows named for that number type.countryWide: the bare country row (or a single-price listing), which prices every number without a more specific row.One ofmobile,fixed,countryWideunitrequiredstring · data.voice[].unit
Per minute (voice) or per message (SMS)One ofmin,msgsmsobject[] · data.sms
Same fields as PricingDestination, shown earlier on this page.updatedAtrequiredstring (date-time) · data.updatedAt
ISO-8601 timestamp (UTC)
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get the live market for one destination
GET/
- Access
- Public. No key needed.
- Rate limit
- 100 requests per second (the default)
Public. Lowest rate per number type, mobile operator breakouts, caller-ID and billing-increment mix, and the five cheapest routes as anonymous facts (price, caller ID, increment, stated ASR). The ASR here is the one the seller states; measured figures per listing are on GET /routes (measured). 404 when the destination has no live route of that type. Cached like the list.
Parameters
slugrequiredpath · string
typequery · string
One of voice, smsDefault "voice"
Response 200
datarequiredobject
slugrequiredstring · data.slug
URL slug from the country name, e.g. "pakistan"countryrequiredstring · data.country
countryCoderequiredstring · data.countryCode
E.164 country calling code, digits onlyroutesrequiredinteger · data.routes
Live routes that price at least one number typelowestrequiredstring · data.lowest
Lowest mobile, fixed or country-wide ratelowestBandrequiredstring · data.lowestBand
mobileandfixed: rate-sheet rows named for that number type.countryWide: the bare country row (or a single-price listing), which prices every number without a more specific row.One ofmobile,fixed,countryWideunitrequiredstring · data.unit
Per minute (voice) or per message (SMS)One ofmin,msgtyperequiredstring · data.type
One ofvoice,smshighestrequiredstring · data.highest
Highest route "from" price in the destinationbandsrequiredobject[] · data.bands
Lowest rate per number typekeyrequiredstring · data.bands[].key
mobileandfixed: rate-sheet rows named for that number type.countryWide: the bare country row (or a single-price listing), which prices every number without a more specific row.One ofmobile,fixed,countryWidefromrequiredstring · data.bands[].from
USD, 6-decimal string, e.g. "0.020370"routesrequiredinteger · data.bands[].routes
operatorsrequiredobject[] · data.operators
Mobile operators broken out on at least two routes, cheapest first, at most 12namerequiredstring · data.operators[].name
fromrequiredstring · data.operators[].from
USD, 6-decimal string, e.g. "0.020370"routesrequiredinteger · data.operators[].routes
cliTypesrequiredobject[] · data.cliTypes
Caller-ID handling the sellers state (voice only)cliTyperequiredstring · data.cliTypes[].cliType
routesrequiredinteger · data.cliTypes[].routes
incrementsrequiredobject[] · data.increments
Billing increments, e.g. "1/1" (voice only)incrementrequiredstring · data.increments[].increment
routesrequiredinteger · data.increments[].routes
routesWithStatedAsrrequiredinteger · data.routesWithStatedAsr
Routes whose seller states an ASRotherBreakoutsrequiredinteger · data.otherBreakouts
Named breakouts that are not a headline number type (toll-free, premium, cities)topRoutesrequiredobject[] · data.topRoutes
The five cheapest routes, as anonymous factsrankrequiredinteger · data.topRoutes[].rank
fromrequiredstring · data.topRoutes[].from
USD, 6-decimal string, e.g. "0.020370"mobileFromrequiredstring | null · data.topRoutes[].mobileFrom
USD, 6-decimal string, e.g. "0.020370"cliTyperequiredstring · data.topRoutes[].cliType
billingIncrementrequiredstring | null · data.topRoutes[].billingIncrement
routeTyperequiredstring · data.topRoutes[].routeType
Quality tier the route is listed understatedAsrrequiredstring | null · data.topRoutes[].statedAsr
Seller-stated ASR %, not measuredstatedAcdrequiredstring | null · data.topRoutes[].statedAcd
Seller-stated ACD in seconds, not measuredrelatedrequiredobject[] · data.related
Destinations in the same world numbering zoneSame fields as PricingDestination, shown earlier on this page.updatedAtrequiredstring (date-time) · data.updatedAt
ISO-8601 timestamp (UTC)
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.