Aviasurf Prices API

The Prices API from Aviasurf — 7 operation(s) for prices.

Operations 7

GET /v1/prices/route Get prices for a specific route #
GET /v1/prices/cheapest-from Get the cheapest destinations from an origin #
GET /v1/prices/popular-from Get the most popular destinations from an origin #
GET /v1/prices/popular-to Get top origins for a destination #
GET /v1/prices/calendar Get grouped price calendar #
GET /v1/prices/by-range Get prices inside a price range #
GET /v1/prices/latest Get latest historical prices #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/aviasurf-com:aviasurf-com-prices-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

aviasurf-com-prices-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Aviasurf Travel Prices API
  version: 1.0.0
  summary: Internal travel-data API for web, chat, and mobile consumers
  description: 'Internal server-to-server API for travel search, discovery, geo resolution,

    catalog data, and media access.


    This API is intended for trusted internal consumers over private network access.'
servers:
- url: https://api.aviasurf.com
  description: Production
- url: http://localhost:18080
  description: Local development
security:
- bearerAuth: []
tags:
- name: Prices
paths:
  /v1/prices/route:
    get:
      tags:
      - Prices
      summary: Get prices for a specific route
      description: Returns cached historical fares, not live booking availability. A non-empty response is cached for 12 hours; a valid empty response for an exact route/date is negatively cached for 5 minutes. After that short TTL an old empty response is never served as stale-on-error.
      parameters:
      - $ref: '#/components/parameters/Origin'
      - $ref: '#/components/parameters/Destination'
      - $ref: '#/components/parameters/DepartureAt'
      - $ref: '#/components/parameters/ReturnAt'
      - $ref: '#/components/parameters/OneWay'
      - $ref: '#/components/parameters/Direct'
      - $ref: '#/components/parameters/Currency'
      - $ref: '#/components/parameters/Market'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Page'
      responses:
        '200':
          description: Route prices
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutePricesEnvelope'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '502':
          $ref: '#/components/responses/BadGateway'
      operationId: getV1PricesRoute
      x-operation-id-source: derived
  /v1/prices/cheapest-from:
    get:
      tags:
      - Prices
      summary: Get the cheapest destinations from an origin
      parameters:
      - $ref: '#/components/parameters/Origin'
      - name: month
        in: query
        schema:
          type: string
          examples:
          - 2026-08
          - '2026-08-01'
      - $ref: '#/components/parameters/Currency'
      - $ref: '#/components/parameters/Market'
      - $ref: '#/components/parameters/Direct'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Page'
      responses:
        '200':
          description: Cheapest destinations from origin
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheapestFromEnvelope'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '502':
          $ref: '#/components/responses/BadGateway'
      operationId: getV1PricesCheapestFrom
      x-operation-id-source: derived
  /v1/prices/popular-from:
    get:
      tags:
      - Prices
      summary: Get the most popular destinations from an origin
      description: Uses prices_for_dates with unique=true and sorting=route, the documented replacement for city-directions.
      parameters:
      - $ref: '#/components/parameters/Origin'
      - name: month
        in: query
        schema:
          type: string
          examples:
          - 2026-08
          - '2026-08-01'
      - $ref: '#/components/parameters/Currency'
      - $ref: '#/components/parameters/Market'
      - $ref: '#/components/parameters/Direct'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Page'
      responses:
        '200':
          description: Popular destinations from origin
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PopularFromEnvelope'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '502':
          $ref: '#/components/responses/BadGateway'
      operationId: getV1PricesPopularFrom
      x-operation-id-source: derived
  /v1/prices/popular-to:
    get:
      tags:
      - Prices
      summary: Get top origins for a destination
      parameters:
      - $ref: '#/components/parameters/Destination'
      - $ref: '#/components/parameters/Locale'
      - $ref: '#/components/parameters/Currency'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Page'
      responses:
        '200':
          description: Popular origins for destination
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PopularToEnvelope'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '502':
          $ref: '#/components/responses/BadGateway'
      operationId: getV1PricesPopularTo
      x-operation-id-source: derived
  /v1/prices/calendar:
    get:
      tags:
      - Prices
      summary: Get grouped price calendar
      parameters:
      - $ref: '#/components/parameters/Origin'
      - $ref: '#/components/parameters/Destination'
      - $ref: '#/components/parameters/DepartureAt'
      - $ref: '#/components/parameters/ReturnAt'
      - name: group_by
        in: query
        schema:
          type: string
          enum:
          - departure_at
          - month
          default: departure_at
      - $ref: '#/components/parameters/Currency'
      - $ref: '#/components/parameters/Market'
      - $ref: '#/components/parameters/Direct'
      responses:
        '200':
          description: Price calendar
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalendarEnvelope'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '502':
          $ref: '#/components/responses/BadGateway'
      operationId: getV1PricesCalendar
      x-operation-id-source: derived
  /v1/prices/by-range:
    get:
      tags:
      - Prices
      summary: Get prices inside a price range
      parameters:
      - $ref: '#/components/parameters/Origin'
      - $ref: '#/components/parameters/Destination'
      - name: value_min
        in: query
        required: true
        schema:
          type: integer
          minimum: 0
      - name: value_max
        in: query
        required: true
        schema:
          type: integer
          minimum: 0
      - $ref: '#/components/parameters/OneWay'
      - $ref: '#/components/parameters/Direct'
      - $ref: '#/components/parameters/Locale'
      - $ref: '#/components/parameters/Currency'
      - $ref: '#/components/parameters/Market'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Page'
      responses:
        '200':
          description: Route prices filtered by range
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutePricesEnvelope'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '502':
          $ref: '#/components/responses/BadGateway'
      operationId: getV1PricesByRange
      x-operation-id-source: derived
  /v1/prices/latest:
    get:
      tags:
      - Prices
      summary: Get latest historical prices
      description: Cached historical fares from Travelp
      operationId: getV1PricesLatest
      x-operation-id-source: derived
components:
  responses:
    BadRequest:
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    Unauthorized:
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    BadGateway:
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
  parameters:
    Currency:
      name: Currency
      in: query
      required: false
      schema:
        type: string
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    ReturnAt:
      name: ReturnAt
      in: query
      required: false
      schema:
        type: string
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    OneWay:
      name: OneWay
      in: query
      required: false
      schema:
        type: string
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    Direct:
      name: Direct
      in: query
      required: false
      schema:
        type: string
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    Locale:
      name: Locale
      in: query
      required: false
      schema:
        type: string
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    Page:
      name: Page
      in: query
      required: false
      schema:
        type: string
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    Limit:
      name: Limit
      in: query
      required: false
      schema:
        type: string
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    Destination:
      name: Destination
      in: query
      required: false
      schema:
        type: string
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    Market:
      name: Market
      in: query
      required: false
      schema:
        type: string
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    DepartureAt:
      name: DepartureAt
      in: query
      required: false
      schema:
        type: string
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    Origin:
      name: Origin
      in: query
      required: false
      schema:
        type: string
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
  schemas:
    CheapestFromEnvelope:
      type: object
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    RoutePricesEnvelope:
      type: object
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    PopularFromEnvelope:
      type: object
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    PopularToEnvelope:
      type: object
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    CalendarEnvelope:
      type: object
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true