Vignette ID Countries API

Which countries are covered and how their toll systems work.

Operations 2

GET /countries List every country Vignette ID sells tolls for #
GET /countries/{code} Get the toll rules for one country #

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/e-vignettes-eu:e-vignettes-eu-countries-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

e-vignettes-eu-countries-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Vignette ID public Countries API
  summary: Read-only catalogue of European e-vignettes, toll products and country toll rules.
  description: 'Vignette ID sells official digital motorway vignettes (e-vignettes) and Alpine section-toll

    tickets for Austria, Switzerland, Czechia, Slovakia, Hungary, Slovenia, Romania, Bulgaria and

    Moldova. This document describes the public, unauthenticated read endpoints served from

    https://e-vignettes.eu: the list of covered countries, the editorial toll rules for each of them, and the

    live product catalogue with prices.


    No API key is required. Requests are rate limited per IP address and every response carries

    the RateLimit-Policy and RateLimit header fields of

    draft-ietf-httpapi-ratelimit-headers-09, alongside the legacy RateLimit-Limit /

    RateLimit-Remaining / RateLimit-Reset triplet, so a client can self-throttle without guessing.

    Responses are also edge-cached: honour Cache-Control rather than polling.


    Placing an order is not part of this API. Issuing a vignette requires the authenticated partner

    API on vignette.id, which is also exposed as an MCP server at https://api.vignette.id/mcp

    (sandbox https://sandbox-api.vignette.id/mcp) for agents that would rather call tools than

    endpoints. Request credentials at https://e-vignettes.eu/developers.'
  version: 1.0.0
  contact:
    name: Vignette ID partner team
    email: work@vignette.id
    url: https://e-vignettes.eu/developers
  termsOfService: https://e-vignettes.eu/terms
  license:
    name: Proprietary
    identifier: LicenseRef-Vignette-ID-Proprietary
servers:
- url: https://e-vignettes.eu/api/v1
  description: Production
security: []
tags:
- name: Countries
  description: Which countries are covered and how their toll systems work.
paths:
  /countries:
    get:
      operationId: listCountries
      tags:
      - Countries
      summary: List every country Vignette ID sells tolls for
      description: Returns the nine covered countries with their ISO code, the national toll operator, a one-paragraph summary of the toll system and links to the human page and to that country's products. Use this first to discover valid `country` values for `listProducts`.
      responses:
        '200':
          description: 'The full country list. Never paginated: the list is nine items long.'
          headers:
            RateLimit-Policy:
              description: The quota policy in force, per draft-ietf-httpapi-ratelimit-headers-09, e.g. "public-read";q=240;w=60.
              schema:
                type: string
                examples:
                - '"public-read";q=240;w=60'
            RateLimit:
              description: Remaining quota (r) and seconds until the window resets (t), e.g. "public-read";r=239;t=43.
              schema:
                type: string
                examples:
                - '"public-read";r=239;t=43'
            RateLimit-Limit:
              description: 'Legacy triplet, kept for older clients: requests allowed per window.'
              schema:
                type: integer
                examples:
                - 240
            RateLimit-Remaining:
              description: 'Legacy triplet: requests still allowed in the current window.'
              schema:
                type: integer
                examples:
                - 239
            RateLimit-Reset:
              description: 'Legacy triplet: seconds until the window resets.'
              schema:
                type: integer
                examples:
                - 43
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountryList'
        '405':
          description: The endpoint is read-only; only GET and OPTIONS are supported.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: The per-IP quota for this policy is exhausted. `Retry-After` gives the seconds to wait; the RateLimit fields carry the same reset.
          headers:
            RateLimit-Policy:
              description: The quota policy in force, per draft-ietf-httpapi-ratelimit-headers-09, e.g. "public-read";q=240;w=60.
              schema:
                type: string
                examples:
                - '"public-read";q=240;w=60'
            RateLimit:
              description: Remaining quota (r) and seconds until the window resets (t), e.g. "public-read";r=239;t=43.
              schema:
                type: string
                examples:
                - '"public-read";r=239;t=43'
            RateLimit-Limit:
              description: 'Legacy triplet, kept for older clients: requests allowed per window.'
              schema:
                type: integer
                examples:
                - 240
            RateLimit-Remaining:
              description: 'Legacy triplet: requests still allowed in the current window.'
              schema:
                type: integer
                examples:
                - 239
            RateLimit-Reset:
              description: 'Legacy triplet: seconds until the window resets.'
              schema:
                type: integer
                examples:
                - 43
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
                examples:
                - 43
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /countries/{code}:
    get:
      operationId: getCountry
      tags:
      - Countries
      summary: Get the toll rules for one country
      description: 'Returns everything the country guide states: which roads are tolled, vehicle categories and validity periods, activation and plate registration, fines and enforcement, tolls not covered by the vignette, a country FAQ, and the official sources each fact was checked against. Prices are not included here — call `listProducts` for those.'
      parameters:
      - name: code
        in: path
        required: true
        description: ISO 3166-1 alpha-2 country code, lower case.
        schema:
          type: string
          enum:
          - at
          - ch
          - cz
          - sk
          - hu
          - si
          - ro
          - bg
          - md
          examples:
          - at
      responses:
        '200':
          description: The country guide.
          headers:
            RateLimit-Policy:
              description: The quota policy in force, per draft-ietf-httpapi-ratelimit-headers-09, e.g. "public-read";q=240;w=60.
              schema:
                type: string
                examples:
                - '"public-read";q=240;w=60'
            RateLimit:
              description: Remaining quota (r) and seconds until the window resets (t), e.g. "public-read";r=239;t=43.
              schema:
                type: string
                examples:
                - '"public-read";r=239;t=43'
            RateLimit-Limit:
              description: 'Legacy triplet, kept for older clients: requests allowed per window.'
              schema:
                type: integer
                examples:
                - 240
            RateLimit-Remaining:
              description: 'Legacy triplet: requests still allowed in the current window.'
              schema:
                type: integer
                examples:
                - 239
            RateLimit-Reset:
              description: 'Legacy triplet: seconds until the window resets.'
              schema:
                type: integer
                examples:
                - 43
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountryDetail'
        '404':
          description: No country with that code. `error.hint` lists the valid codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: The endpoint is read-only; only GET and OPTIONS are supported.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: The per-IP quota for this policy is exhausted. `Retry-After` gives the seconds to wait; the RateLimit fields carry the same reset.
          headers:
            RateLimit-Policy:
              description: The quota policy in force, per draft-ietf-httpapi-ratelimit-headers-09, e.g. "public-read";q=240;w=60.
              schema:
                type: string
                examples:
                - '"public-read";q=240;w=60'
            RateLimit:
              description: Remaining quota (r) and seconds until the window resets (t), e.g. "public-read";r=239;t=43.
              schema:
                type: string
                examples:
                - '"public-read";r=239;t=43'
            RateLimit-Limit:
              description: 'Legacy triplet, kept for older clients: requests allowed per window.'
              schema:
                type: integer
                examples:
                - 240
            RateLimit-Remaining:
              description: 'Legacy triplet: requests still allowed in the current window.'
              schema:
                type: integer
                examples:
                - 239
            RateLimit-Reset:
              description: 'Legacy triplet: seconds until the window resets.'
              schema:
                type: integer
                examples:
                - 43
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
                examples:
                - 43
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      type: object
      description: Every failure from this API, including an unmatched /api/* URL, uses this shape. Branch on `error.code`, show `error.message`, act on `error.hint`.
      required:
      - error
      properties:
        error:
          type: object
          required:
          - code
          - message
          - hint
          - status
          - documentation_url
          properties:
            code:
              type: string
              description: Stable machine-readable code. Safe to branch on.
              enum:
              - not_found
              - invalid_parameter
              - method_not_allowed
              - rate_limited
              - upstream_unavailable
              - internal_error
            message:
              type: string
              description: Human-readable description of what failed.
            hint:
              type: string
              description: What to change to make the call succeed.
            status:
              type: integer
              description: HTTP status code, repeated in the body.
            documentation_url:
              type: string
              format: uri
    CountryList:
      type: object
      required:
      - object
      - count
      - data
      properties:
        object:
          type: string
          const: list
        count:
          type: integer
        data:
          type: array
          items:
            $ref: '#/components/schemas/CountrySummary'
    CountryDetail:
      allOf:
      - $ref: '#/components/schemas/CountrySummary'
      - type: object
        required:
        - subtitle
        - sections
        - faq
        - sources
        properties:
          subtitle:
            type: string
          sections:
            type: array
            description: The country guide in reading order.
            items:
              type: object
              required:
              - heading
              - paragraphs
              - bullets
              properties:
                heading:
                  type: string
                paragraphs:
                  type: array
                  items:
                    type: string
                bullets:
                  type: array
                  items:
                    type: string
          faq:
            type: array
            items:
              type: object
              required:
              - question
              - answer
              properties:
                question:
                  type: string
                answer:
                  type: string
          sources:
            type: array
            description: Official pages each fact was checked against.
            items:
              type: object
              required:
              - label
              - url
              properties:
                label:
                  type: string
                url:
                  type: string
                  format: uri
    CountrySummary:
      type: object
      required:
      - code
      - name
      - iso_code
      - operator
      - summary
      - page_url
      - products_url
      - last_reviewed
      properties:
        code:
          type: string
          description: ISO 3166-1 alpha-2, lower case.
          examples:
          - at
        name:
          type: string
          description: English country name.
          examples:
          - Austria
        iso_code:
          type: string
          description: ISO 3166-1 alpha-2, upper case.
          examples:
          - AT
        operator:
          $ref: '#/components/schemas/Operator'
        summary:
          type: string
          description: One paragraph on how the country's toll works.
        page_url:
          type: string
          format: uri
          description: Human country guide.
        products_url:
          type: string
          format: uri
          description: Products filtered to this country.
        last_reviewed:
          type: string
          format: date
          description: ISO date the facts were last verified against the operator.
    Operator:
      type: object
      description: The national authority that issues the toll product.
      required:
      - name
      - system_name
      - url
      properties:
        name:
          type:
          - string
          - 'null'
          description: Official operator, e.g. "ASFINAG".
        system_name:
          type:
          - string
          - 'null'
          description: Name of the toll system if it has one, e.g. "HU-GO".
        url:
          type:
          - string
          - 'null'
          format: uri
          description: Operator website.
externalDocs:
  description: Partner API reference — authenticated ordering endpoints and the MCP server
  url: https://docs.vgnt.app