Piloterr Ted API

The Ted API from Piloterr — 2 operation(s) for ted.

GitHub OpenAPI

Operations 4

POST /v2/ted/search TED Search #
GET /v2/ted/notice TED Notice #
POST /v2/ted/notice TED Notice #

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/piloterr-com:piloterr-com-ted-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

piloterr-com-ted-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Piloterr API Reference Ted API
  description: Complete API reference documentation.
  version: 1.0.0
servers:
- url: https://api.piloterr.com
  description: API Server
tags:
- name: Ted
paths:
  /v2/ted/search:
    get:
      summary: TED Search
      description: 'Search TED procurement notices by keyword or filters. Returns notice cards and pagination (1 credit).


        **Credit cost:** 1 credit per call'
      operationId: get-ted-search
      security:
      - ApiKeyAuth: []
      parameters:
      - name: query
        in: query
        required: false
        description: "Keyword, publication number, or a TED search URL.\n\n**Example (keyword):**\n\n    software\n\n**Example (publication number):**\n\n    30-2026\n\n**Example (search URL):**\n\n    https://ted.europa.eu/en/search/result?query=software\n\n**Notes:**\n- A notice URL (`/notice/`) returns 400. Use the notice endpoint.\n- Filters (`country=FR`, `cpv`, `buyer`, …) can be set with or without `query`.\n- `page` starts at 1. Pass the next page yourself."
        schema:
          type: string
          description: "Keyword, publication number, or a TED search URL.\n\n**Example (keyword):**\n\n    software\n\n**Example (publication number):**\n\n    30-2026\n\n**Example (search URL):**\n\n    https://ted.europa.eu/en/search/result?query=software\n\n**Notes:**\n- A notice URL (`/notice/`) returns 400. Use the notice endpoint.\n- Filters (`country=FR`, `cpv`, `buyer`, …) can be set with or without `query`.\n- `page` starts at 1. Pass the next page yourself."
      - name: notice_type
        in: query
        required: false
        description: Notice code such as cn-standard or can-standard. Combined with AND.
        schema:
          type: string
          description: Notice code such as cn-standard or can-standard. Combined with AND.
      - name: country
        in: query
        required: false
        description: Buyer country, ISO alpha-2 or alpha-3. FR becomes FRA. A country name returns 400.
        schema:
          type: string
          description: Buyer country, ISO alpha-2 or alpha-3. FR becomes FRA. A country name returns 400.
      - name: place
        in: query
        required: false
        description: 'Place of performance: country code or NUTS code such as FRK24.'
        schema:
          type: string
          description: 'Place of performance: country code or NUTS code such as FRK24.'
      - name: cpv
        in: query
        required: false
        description: CPV code or prefix. Digits and an optional star, for example 72000000 or 30*.
        schema:
          type: string
          description: CPV code or prefix. Digits and an optional star, for example 72000000 or 30*.
      - name: buyer
        in: query
        required: false
        description: Buyer name, matched as a phrase.
        schema:
          type: string
          description: Buyer name, matched as a phrase.
      - name: page
        in: query
        required: false
        description: 'Page from 1. next is always null: pass page + 1. A page past the last one returns 404.'
        schema:
          type: number
          description: 'Page from 1. next is always null: pass page + 1. A page past the last one returns 404.'
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/is_async'
      - $ref: '#/components/parameters/soft_fail'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        cpv:
                          type: array
                          items:
                            type: string
                        url:
                          type: string
                        place:
                          type: string
                        title:
                          type: string
                        currency:
                          nullable: true
                        deadline:
                          type: string
                        buyer_name:
                          type: string
                        notice_type:
                          type: string
                        buyer_country:
                          type: string
                        value_display:
                          nullable: true
                        estimated_value:
                          nullable: true
                        publication_date:
                          type: string
                        publication_number:
                          type: string
                  pagination:
                    type: object
                    properties:
                      next:
                        nullable: true
                      page:
                        type: integer
                      per_page:
                        type: integer
                      total_pages:
                        type: integer
                      total_results:
                        type: integer
              examples:
                Notice 30-2026:
                  value:
                    results:
                    - cpv:
                      - '50312610'
                      - '35125100'
                      url: https://ted.europa.eu/en/notice/-/detail/30-2026
                      place: FRK24
                      title: France – Maintenance of information technology equipment – OBSERVATOIRE DES MOBILITES. FOURNITURE, INSTALLATION D'INFRASTRUCTURES DE MATERIELS DE COMPTAGES DES MODES ACTIFS ET MAINTENANCE
                      currency: null
                      deadline: '2026-02-02'
                      buyer_name: SMMAG, Syndicat Mixte des Mobilités de l'Aire Grenobloise, Grenoble-Alpes Métropole
                      notice_type: cn-standard
                      buyer_country: FRA
                      value_display: null
                      estimated_value: null
                      publication_date: '2026-01-02'
                      publication_number: 30-2026
                    pagination:
                      next: null
                      page: 1
                      per_page: 20
                      total_pages: 1
                      total_results: 1
        '400':
          description: Bad Request — missing or invalid parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Bad Request
        '401':
          description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidKey:
                  value:
                    error: Invalid API Key
                planRateLimit:
                  value:
                    error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
                keyQuota:
                  value:
                    error: 'Rate limit exceeded for the API key: quota monthly'
        '402':
          description: Payment Required — your subscription or credit balance is insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Payment required
        '500':
          description: Internal Server Error — something went wrong on our side.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Internal Error
      tags:
      - Ted
    post:
      summary: TED Search
      description: 'Search TED procurement notices by keyword or filters. Returns notice cards and pagination (1 credit).


        **Credit cost:** 1 credit per call'
      operationId: post-ted-search
      security:
      - ApiKeyAuth: []
      parameters:
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/is_async'
      - $ref: '#/components/parameters/soft_fail'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: "Keyword, publication number, or a TED search URL.\n\n**Example (keyword):**\n\n    software\n\n**Example (publication number):**\n\n    30-2026\n\n**Example (search URL):**\n\n    https://ted.europa.eu/en/search/result?query=software\n\n**Notes:**\n- A notice URL (`/notice/`) returns 400. Use the notice endpoint.\n- Filters (`country=FR`, `cpv`, `buyer`, …) can be set with or without `query`.\n- `page` starts at 1. Pass the next page yourself."
                notice_type:
                  type: string
                  description: Notice code such as cn-standard or can-standard. Combined with AND.
                country:
                  type: string
                  description: Buyer country, ISO alpha-2 or alpha-3. FR becomes FRA. A country name returns 400.
                place:
                  type: string
                  description: 'Place of performance: country code or NUTS code such as FRK24.'
                cpv:
                  type: string
                  description: CPV code or prefix. Digits and an optional star, for example 72000000 or 30*.
                buyer:
                  type: string
                  description: Buyer name, matched as a phrase.
                page:
                  type: number
                  description: 'Page from 1. next is always null: pass page + 1. A page past the last one returns 404.'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        cpv:
                          type: array
                          items:
                            type: string
                        url:
                          type: string
                        place:
                          type: string
                        title:
                          type: string
                        currency:
                          nullable: true
                        deadline:
                          type: string
                        buyer_name:
                          type: string
                        notice_type:
                          type: string
                        buyer_country:
                          type: string
                        value_display:
                          nullable: true
                        estimated_value:
                          nullable: true
                        publication_date:
                          type: string
                        publication_number:
                          type: string
                  pagination:
                    type: object
                    properties:
                      next:
                        nullable: true
                      page:
                        type: integer
                      per_page:
                        type: integer
                      total_pages:
                        type: integer
                      total_results:
                        type: integer
              examples:
                Notice 30-2026:
                  value:
                    results:
                    - cpv:
                      - '50312610'
                      - '35125100'
                      url: https://ted.europa.eu/en/notice/-/detail/30-2026
                      place: FRK24
                      title: France – Maintenance of information technology equipment – OBSERVATOIRE DES MOBILITES. FOURNITURE, INSTALLATION D'INFRASTRUCTURES DE MATERIELS DE COMPTAGES DES MODES ACTIFS ET MAINTENANCE
                      currency: null
                      deadline: '2026-02-02'
                      buyer_name: SMMAG, Syndicat Mixte des Mobilités de l'Aire Grenobloise, Grenoble-Alpes Métropole
                      notice_type: cn-standard
                      buyer_country: FRA
                      value_display: null
                      estimated_value: null
                      publication_date: '2026-01-02'
                      publication_number: 30-2026
                    pagination:
                      next: null
                      page: 1
                      per_page: 20
                      total_pages: 1
                      total_results: 1
        '400':
          description: Bad Request — missing or invalid parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Bad Request
        '401':
          description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidKey:
                  value:
                    error: Invalid API Key
                planRateLimit:
                  value:
                    error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
                keyQuota:
                  value:
                    error: 'Rate limit exceeded for the API key: quota monthly'
        '402':
          description: Payment Required — your subscription or credit balance is insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Payment required
        '500':
          description: Internal Server Error — something went wrong on our side.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Internal Error
      tags:
      - Ted
  /v2/ted/notice:
    get:
      summary: TED Notice
      description: 'TED notice profile: buyer, lots, deadline, value and documents (1 credit).


        **Credit cost:** 1 credit per call'
      operationId: get-ted-notice
      security:
      - ApiKeyAuth: []
      parameters:
      - name: query
        in: query
        required: true
        description: "Publication number, or a TED notice URL.\n\n**Example (publication number):**\n\n    30-2026\n\n**Example (notice URL):**\n\n    https://ted.europa.eu/en/notice/-/detail/30-2026\n\n**Notes:**\n- The number is 1 to 8 digits, a hyphen, then a 4-digit year.\n- A keyword or a search URL returns 400."
        schema:
          type: string
          description: "Publication number, or a TED notice URL.\n\n**Example (publication number):**\n\n    30-2026\n\n**Example (notice URL):**\n\n    https://ted.europa.eu/en/notice/-/detail/30-2026\n\n**Notes:**\n- The number is 1 to 8 digits, a hyphen, then a 4-digit year.\n- A keyword or a search URL returns 400."
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/is_async'
      - $ref: '#/components/parameters/soft_fail'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  cpv:
                    type: array
                    items:
                      type: string
                  url:
                    type: string
                  lots:
                    type: array
                    items:
                      type: object
                      properties:
                        title:
                          type: string
                        description:
                          type: string
                  oj_s:
                    type: string
                  place:
                    type: string
                  title:
                    type: string
                  awards:
                    type: array
                    items: {}
                  currency:
                    nullable: true
                  deadline:
                    type: string
                  documents:
                    type: array
                    items:
                      type: string
                  languages:
                    type: array
                    items:
                      type: string
                  procedure:
                    type: string
                  buyer_name:
                    type: string
                  description:
                    type: string
                  legal_basis:
                    type: string
                  notice_type:
                    type: string
                  buyer_country:
                    type: string
                  dispatch_date:
                    type: string
                  value_display:
                    nullable: true
                  estimated_value:
                    nullable: true
                  publication_date:
                    type: string
                  publication_number:
                    type: string
              examples:
                Notice 30-2026:
                  value:
                    cpv:
                    - '50312610'
                    - '35125100'
                    url: https://ted.europa.eu/en/notice/-/detail/30-2026
                    lots:
                    - title: Analyse, télétransmission des données, maintenance des matériels existants
                      description: Analyse, télétransmission des données, maintenance des matériels existants
                    - title: Maintenance, télétransmission, acquisition et installation de nouveaux matériels de comptages
                      description: Maintenance, télétransmission, acquisition et installation de nouveaux matériels de comptages
                    oj_s: 1/2026
                    place: FRK24
                    title: France – Maintenance of information technology equipment – OBSERVATOIRE DES MOBILITES. FOURNITURE, INSTALLATION D'INFRASTRUCTURES DE MATERIELS DE COMPTAGES DES MODES ACTIFS ET MAINTENANCE
                    awards: []
                    currency: null
                    deadline: '2026-02-02'
                    documents:
                    - https://www.marches-publics.info/mpiaws/index.cfm?fuseaction=dematEnt.login&type=DCE&IDM=1760411
                    languages:
                    - bul
                    - ces
                    - dan
                    - deu
                    - ell
                    - eng
                    - est
                    - fin
                    - fra
                    - gle
                    - hrv
                    - hun
                    - ita
                    - lav
                    - lit
                    - mlt
                    - nld
                    - pol
                    - por
                    - ron
                    - slk
                    - slv
                    - spa
                    - swe
                    procedure: open
                    buyer_name: SMMAG, Syndicat Mixte des Mobilités de l'Aire Grenobloise, Grenoble-Alpes Métropole
                    description: 'Le syndicat Mixte des Mobilités de l''Aire Grenobloise souhaite lancer en groupement de commandes avec Grenoble-Alpes Métropole, une consultation relative à la Fourniture, l''installation d''infrastructures de matériels de comptages des modes actifs et maintenance. Le ou les futurs prestataires auront en charge de fournir des compteurs, réaliser l''installation, et entretenir les matériels de comptages (existants et futurs). Cette consultation se divise en deux lots : - Lot 1 : Analyse, télétransmission des données et maintenance des matériels existants - Lot 2 : Maintenance, télétransmission, acquisition et installation de nouveaux matériels de comptage L''accord-cadre sera exécuté par l''émission de bons de commande. Chaque lot fera l''objet d''une attribution séparée. Les prestations sont réglées par des prix unitaires. L''accord-cadre est conclu pour une période initiale de 2 ans, reconductible 1 fois 2 ans (4 ans au total). La date de démarrage des prestations est purement indicative'
                    legal_basis: 32014L0024
                    notice_type: cn-standard
                    buyer_country: FRA
                    dispatch_date: '2025-12-31'
                    value_display: null
                    estimated_value: null
                    publication_date: '2026-01-02'
                    publication_number: 30-2026
        '400':
          description: Bad Request — missing or invalid parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Bad Request
        '401':
          description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidKey:
                  value:
                    error: Invalid API Key
                planRateLimit:
                  value:
                    error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
                keyQuota:
                  value:
                    error: 'Rate limit exceeded for the API key: quota monthly'
        '402':
          description: Payment Required — your subscription or credit balance is insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Payment required
        '500':
          description: Internal Server Error — something went wrong on our side.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Internal Error
      tags:
      - Ted
    post:
      summary: TED Notice
      description: 'TED notice profile: buyer, lots, deadline, value and documents (1 credit).


        **Credit cost:** 1 credit per call'
      operationId: post-ted-notice
      security:
      - ApiKeyAuth: []
      parameters:
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/is_async'
      - $ref: '#/components/parameters/soft_fail'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: "Publication number, or a TED notice URL.\n\n**Example (publication number):**\n\n    30-2026\n\n**Example (notice URL):**\n\n    https://ted.europa.eu/en/notice/-/detail/30-2026\n\n**Notes:**\n- The number is 1 to 8 digits, a hyphen, then a 4-digit year.\n- A keyword or a search URL returns 400."
              required:
              - query
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  cpv:
                    type: array
                    items:
                      type: string
                  url:
                    type: string
                  lots:
                    type: array
                    items:
                      type: object
                      properties:
                        title:
                          type: string
                        description:
                          type: string
                  oj_s:
                    type: string
                  place:
                    type: string
                  title:
                    type: string
                  awards:
                    type: array
                    items: {}
                  currency:
                    nullable: true
                  deadline:
                    type: string
                  documents:
                    type: array
                    items:
                      type: string
                  languages:
                    type: array
                    items:
                      type: string
                  procedure:
                    type: string
                  buyer_name:
                    type: string
                  description:
                    type: string
                  legal_basis:
                    type: string
                  notice_type:
                    type: string
                  buyer_country:
                    type: string
                  dispatch_date:
                    type: string
                  value_display:
                    nullable: true
                  estimated_value:
                    nullable: true
                  publication_date:
                    type: string
                  publication_number:
                    type: string
              examples:
                Notice 30-2026:
                  value:
                    cpv:
                    - '50312610'
                    - '35125100'
                    url: https://ted.europa.eu/en/notice/-/detail/30-2026
                    lots:
                    - title: Analyse, télétransmission des données, maintenance des matériels existants
                      description: Analyse, télétransmission des données, maintenance des matériels existants
                    - title: Maintenance, télétransmission, acquisition et installation de nouveaux matériels de comptages
                      description: Maintenance, télétransmission, acquisition et installation de nouveaux matériels de comptages
                    oj_s: 1/2026
                    place: FRK24
                    title: France – Maintenance of information technology equipment – OBSERVATOIRE DES MOBILITES. FOURNITURE, INSTALLATION D'INFRASTRUCTURES DE MATERIELS DE COMPTAGES DES MODES ACTIFS ET MAINTENANCE
                    awards: []
                    currency: null
                    deadline: '2026-02-02'
                    documents:
                    - https://www.marches-publics.info/mpiaws/index.cfm?fuseaction=dematEnt.login&type=DCE&IDM=1760411
                    languages:
                    - bul
                    - ces
                    - dan
                    - deu
                    - ell
                    - eng
                    - est
                    - fin
                    - fra
                    - gle
                    - hrv
                    - hun
                    - ita
                    - lav
                    - lit
                    - mlt
                    - nld
                    - pol
                    - por
                    - ron
                    - slk
                    - slv
                    - spa
                    - swe
                    procedure: open
                    buyer_name: SMMAG, Syndicat Mixte des Mobilités de l'Aire Grenobloise, Grenoble-Alpes Métropole
                    description: 'Le syndicat Mixte des Mobilités de l''Aire Grenobloise souhaite lancer en groupement de commandes avec Grenoble-Alpes Métropole, une consultation relative à la Fourniture, l''installation d''infrastructures de matériels de comptages des modes actifs et maintenance. Le ou les futurs prestataires auront en charge de fournir des compteurs, réaliser l''installation, et entretenir les matériels de comptages (existants et futurs). Cette consultation se divise en deux lots : - Lot 1 : Analyse, télétransmission des données et maintenance des matériels existants - Lot 2 : Maintenance, télétransmission, acquisition et installation de nouveaux matériels de comptage L''accord-cadre sera exécuté par l''émission de bons de commande. Chaque lot fera l''objet d''une attribution séparée. Les prestations sont réglées par des prix unitaires. L''accord-cadre est conclu pour une période initiale de 2 ans, reconductible 1 fois 2 ans (4 ans au total). La date de démarrage des prestations est purement indicative'
                    legal_basis: 32014L0024
                    notice_type: cn-standard
                    buyer_country: FRA
                    dispatch_date: '2025-12-31'
                    value_display: null
                    estimated_value: null
                    publication_date: '2026-01-02'
                    publication_number: 30-2026
        '400':
          description: Bad Request — missing or invalid parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Bad Request
        '401':
          description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidKey:
                  value:
                    error: Invalid API Key
                planRateLimit:
                  value:
                    error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
                keyQuota:
                  value:
                    error: 'Rate limit exceeded for the API key: quota monthly'
        '402':
          description: Payment Required — your subscription or credit balance is insufficient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Payment required
        '500':
          description: Internal Server Error — something went wrong on our side.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Internal Error
      tags:
      - Ted
components:
  parameters:
    fields:
      name: fields
      in: query
      required: false
      description: Comma-separated list of response fields to return, with dot notation for nested fields (e.g. `name,location.city`).
      schema:
        type: string
    is_async:
      name: is_async
      in: query
      required: false
      description: 'Run the request as a background job: the API answers `202` with a `job_id` to poll on `GET /v1/jobs/{id}`.'
      schema:
        type: boolean
        default: false
    soft_fail:
      name: soft_fail
      in: query
      required: false
      description: Return HTTP 200 even when the request fails; the error is in the `error` field of the body.
      schema:
        type: boolean
        default: false
  schemas:
    ErrorResponse:
      type: object
      required:
      - error
      properties:
        error:
          type: string
          description: Human-readable error message.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Your API key. Include it in the x-api-key header for every request.