Piloterr Action API

The Action API from Piloterr — 2 operation(s) for action.

GitHub OpenAPI

Operations 4

POST /v2/action/search Action Search #
GET /v2/action/product Action Product #
POST /v2/action/product Action Product #

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-action-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-action-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Piloterr API Reference Action API
  description: Complete API reference documentation.
  version: 1.0.0
servers:
- url: https://api.piloterr.com
  description: API Server
tags:
- name: Action
paths:
  /v2/action/search:
    get:
      summary: Action Search
      description: 'Action Search API: search product listings by keyword or URL on Action.com across European locales. Returns prices, images, locale, currency and pagination via browser rendering.


        **Credit cost:** 2 credits per call'
      operationId: get-action-search
      security:
      - ApiKeyAuth: []
      parameters:
      - name: query
        in: query
        required: true
        description: 'Search keyword or full Action.com search URL.


          **Examples:**


          ```

          meuble

          ```


          ```

          https://www.action.com/fr-fr/search/?q=meuble

          ```


          ```

          https://www.action.com/pt-pt/search/?q=cabide

          ```


          Use **Action Product** on any result `url` or `product_id` for full PDP data.'
        schema:
          type: string
          description: 'Search keyword or full Action.com search URL.


            **Examples:**


            ```

            meuble

            ```


            ```

            https://www.action.com/fr-fr/search/?q=meuble

            ```


            ```

            https://www.action.com/pt-pt/search/?q=cabide

            ```


            Use **Action Product** on any result `url` or `product_id` for full PDP data.'
      - name: region
        in: query
        required: false
        description: 'Locale (`fr-fr`, `de-de`, `pt-pt`, …) or country code (`fr`, `de`, `pt`). Default: `fr-fr`.


          For multilingual countries use full locale (`fr-be`, `nl-be`, `fr-ch`, `de-ch`, `it-ch`).'
        schema:
          type: string
          description: 'Locale (`fr-fr`, `de-de`, `pt-pt`, …) or country code (`fr`, `de`, `pt`). Default: `fr-fr`.


            For multilingual countries use full locale (`fr-be`, `nl-be`, `fr-ch`, `de-ch`, `it-ch`).'
      - name: page
        in: query
        required: false
        description: '1-based page number (default: 1).'
        schema:
          type: number
          minimum: 1
          maximum: 500
          description: '1-based page number (default: 1).'
      - name: return_page_source
        in: query
        required: false
        description: 'When `true`, return the raw HTML page source as `{"result": "..."}` instead of structured JSON. Defaults to `false`.'
        schema:
          type: boolean
          description: 'When `true`, return the raw HTML page source as `{"result": "..."}` instead of structured JSON. Defaults to `false`.'
      - $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:
                        url:
                          type: string
                        price:
                          type: number
                        title:
                          type: string
                        locale:
                          type: string
                        currency:
                          type: string
                        image_url:
                          type: string
                        product_id:
                          type: string
                  pagination:
                    type: object
                    properties:
                      next:
                        type: string
                      page:
                        type: integer
                      per_page:
                        type: integer
                      total_pages:
                        type: integer
                      total_results:
                        type: integer
              examples:
                Search 'meuble' on action.com fr-fr (page 1):
                  value:
                    results:
                    - url: https://www.action.com/fr-fr/p/3220594/meuble-d-entree/
                      price: 32.95
                      title: Meuble d'entrée
                      locale: fr-fr
                      currency: EUR
                      image_url: https://asset.action.com/image/upload/3220594_8718964261123-110_01_l7lvqj
                      product_id: '3220594'
                    - url: https://www.action.com/fr-fr/p/3216159/etagere/
                      price: 39.95
                      title: Étagère
                      locale: fr-fr
                      currency: EUR
                      image_url: https://asset.action.com/image/upload/3216159_8718964237609-110_01_lbhy6y
                      product_id: '3216159'
                    - url: https://www.action.com/fr-fr/p/3220583/etagere/
                      price: 29.95
                      title: Étagère
                      locale: fr-fr
                      currency: EUR
                      image_url: https://asset.action.com/image/upload/3220583_8718964261420-110_01_uoqzby
                      product_id: '3220583'
                    pagination:
                      next: https://www.action.com/fr-fr/search/?q=meuble&page=2#product-grid
                      page: 1
                      per_page: 24
                      total_pages: 8
                      total_results: 185
        '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:
      - Action
    post:
      summary: Action Search
      description: 'Action Search API: search product listings by keyword or URL on Action.com across European locales. Returns prices, images, locale, currency and pagination via browser rendering.


        **Credit cost:** 2 credits per call'
      operationId: post-action-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: 'Search keyword or full Action.com search URL.


                    **Examples:**


                    ```

                    meuble

                    ```


                    ```

                    https://www.action.com/fr-fr/search/?q=meuble

                    ```


                    ```

                    https://www.action.com/pt-pt/search/?q=cabide

                    ```


                    Use **Action Product** on any result `url` or `product_id` for full PDP data.'
                region:
                  type: string
                  description: 'Locale (`fr-fr`, `de-de`, `pt-pt`, …) or country code (`fr`, `de`, `pt`). Default: `fr-fr`.


                    For multilingual countries use full locale (`fr-be`, `nl-be`, `fr-ch`, `de-ch`, `it-ch`).'
                page:
                  type: number
                  minimum: 1
                  maximum: 500
                  description: '1-based page number (default: 1).'
                return_page_source:
                  type: boolean
                  description: 'When `true`, return the raw HTML page source as `{"result": "..."}` instead of structured JSON. Defaults to `false`.'
              required:
              - query
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        url:
                          type: string
                        price:
                          type: number
                        title:
                          type: string
                        locale:
                          type: string
                        currency:
                          type: string
                        image_url:
                          type: string
                        product_id:
                          type: string
                  pagination:
                    type: object
                    properties:
                      next:
                        type: string
                      page:
                        type: integer
                      per_page:
                        type: integer
                      total_pages:
                        type: integer
                      total_results:
                        type: integer
              examples:
                Search 'meuble' on action.com fr-fr (page 1):
                  value:
                    results:
                    - url: https://www.action.com/fr-fr/p/3220594/meuble-d-entree/
                      price: 32.95
                      title: Meuble d'entrée
                      locale: fr-fr
                      currency: EUR
                      image_url: https://asset.action.com/image/upload/3220594_8718964261123-110_01_l7lvqj
                      product_id: '3220594'
                    - url: https://www.action.com/fr-fr/p/3216159/etagere/
                      price: 39.95
                      title: Étagère
                      locale: fr-fr
                      currency: EUR
                      image_url: https://asset.action.com/image/upload/3216159_8718964237609-110_01_lbhy6y
                      product_id: '3216159'
                    - url: https://www.action.com/fr-fr/p/3220583/etagere/
                      price: 29.95
                      title: Étagère
                      locale: fr-fr
                      currency: EUR
                      image_url: https://asset.action.com/image/upload/3220583_8718964261420-110_01_uoqzby
                      product_id: '3220583'
                    pagination:
                      next: https://www.action.com/fr-fr/search/?q=meuble&page=2#product-grid
                      page: 1
                      per_page: 24
                      total_pages: 8
                      total_results: 185
        '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:
      - Action
  /v2/action/product:
    get:
      summary: Action Product
      description: 'Action Product API: fetch full product page data from a product ID or URL on Action.com. Returns pricing, specs, images, breadcrumbs and availability via browser rendering.


        **Credit cost:** 2 credits per call'
      operationId: get-action-product
      security:
      - ApiKeyAuth: []
      parameters:
      - name: query
        in: query
        required: true
        description: 'Action product ID or full product URL.


          **Examples:**


          ```

          3216159

          ```


          ```

          https://www.action.com/fr-fr/p/3216159/etagere/

          ```


          ```

          https://www.action.com/pt-pt/p/2535685/cabides-de-veludo/

          ```'
        schema:
          type: string
          description: 'Action product ID or full product URL.


            **Examples:**


            ```

            3216159

            ```


            ```

            https://www.action.com/fr-fr/p/3216159/etagere/

            ```


            ```

            https://www.action.com/pt-pt/p/2535685/cabides-de-veludo/

            ```'
      - name: region
        in: query
        required: false
        description: 'Locale (`fr-fr`, `de-de`, `pt-pt`, …) or country code (`fr`, `de`, `pt`). Default: `fr-fr`.'
        schema:
          type: string
          description: 'Locale (`fr-fr`, `de-de`, `pt-pt`, …) or country code (`fr`, `de`, `pt`). Default: `fr-fr`.'
      - name: return_page_source
        in: query
        required: false
        description: 'When `true`, return the raw HTML page source as `{"result": "..."}` instead of structured JSON. Defaults to `false`.'
        schema:
          type: boolean
          description: 'When `true`, return the raw HTML page source as `{"result": "..."}` instead of structured JSON. Defaults to `false`.'
      - $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:
                  url:
                    type: string
                  price:
                    type: number
                  title:
                    type: string
                  images:
                    type: array
                    items:
                      type: string
                  locale:
                    type: string
                  currency:
                    type: string
                  in_stock:
                    type: boolean
                  image_url:
                    type: string
                  product_id:
                    type: string
                  breadcrumbs:
                    type: array
                    items:
                      type: string
                  description:
                    type: string
                  availability:
                    type: string
                  specifications:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                        value:
                          type: string
              examples:
                Étagère (3216159) on action.com fr-fr:
                  value:
                    url: https://www.action.com/fr-fr/p/3216159/etagere/
                    price: 39.95
                    title: Étagère
                    images:
                    - https://asset.action.com/image/upload/3216159_8718964237609-110_01_lbhy6y
                    - https://asset.action.com/image/upload/3216159_8718964237593-110_01_eglur0
                    - https://asset.action.com/image/upload/3216159_8718964237609-111_01_sofmt6
                    locale: fr-fr
                    currency: EUR
                    in_stock: true
                    image_url: https://asset.action.com/image/upload/3216159_8718964237609-110_01_lbhy6y
                    product_id: '3216159'
                    breadcrumbs:
                    - Habitat
                    - Meubles
                    - Étagère
                    description: Donnez un coup de jeune à votre salon avec cette étagère moderne. Les rayons ouverts sont parfaits pour vos plus belles décorations et plantes, tandis que le compartiment inférieur avec portes vous permet de ranger le tout de manière ordonnée.
                    availability: in_stock
                    specifications:
                    - key: Couleur
                      value: Beige, Brun, Noir, Blanc
                    - key: Matériau
                      value: Iron, Bois mdf, Melamine
                    - key: Numéro de l'article
                      value: '3216159'
        '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:
      - Action
    post:
      summary: Action Product
      description: 'Action Product API: fetch full product page data from a product ID or URL on Action.com. Returns pricing, specs, images, breadcrumbs and availability via browser rendering.


        **Credit cost:** 2 credits per call'
      operationId: post-action-product
      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: 'Action product ID or full product URL.


                    **Examples:**


                    ```

                    3216159

                    ```


                    ```

                    https://www.action.com/fr-fr/p/3216159/etagere/

                    ```


                    ```

                    https://www.action.com/pt-pt/p/2535685/cabides-de-veludo/

                    ```'
                region:
                  type: string
                  description: 'Locale (`fr-fr`, `de-de`, `pt-pt`, …) or country code (`fr`, `de`, `pt`). Default: `fr-fr`.'
                return_page_source:
                  type: boolean
                  description: 'When `true`, return the raw HTML page source as `{"result": "..."}` instead of structured JSON. Defaults to `false`.'
              required:
              - query
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                  price:
                    type: number
                  title:
                    type: string
                  images:
                    type: array
                    items:
                      type: string
                  locale:
                    type: string
                  currency:
                    type: string
                  in_stock:
                    type: boolean
                  image_url:
                    type: string
                  product_id:
                    type: string
                  breadcrumbs:
                    type: array
                    items:
                      type: string
                  description:
                    type: string
                  availability:
                    type: string
                  specifications:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                        value:
                          type: string
              examples:
                Étagère (3216159) on action.com fr-fr:
                  value:
                    url: https://www.action.com/fr-fr/p/3216159/etagere/
                    price: 39.95
                    title: Étagère
                    images:
                    - https://asset.action.com/image/upload/3216159_8718964237609-110_01_lbhy6y
                    - https://asset.action.com/image/upload/3216159_8718964237593-110_01_eglur0
                    - https://asset.action.com/image/upload/3216159_8718964237609-111_01_sofmt6
                    locale: fr-fr
                    currency: EUR
                    in_stock: true
                    image_url: https://asset.action.com/image/upload/3216159_8718964237609-110_01_lbhy6y
                    product_id: '3216159'
                    breadcrumbs:
                    - Habitat
                    - Meubles
                    - Étagère
                    description: Donnez un coup de jeune à votre salon avec cette étagère moderne. Les rayons ouverts sont parfaits pour vos plus belles décorations et plantes, tandis que le compartiment inférieur avec portes vous permet de ranger le tout de manière ordonnée.
                    availability: in_stock
                    specifications:
                    - key: Couleur
                      value: Beige, Brun, Noir, Blanc
                    - key: Matériau
                      value: Iron, Bois mdf, Melamine
                    - key: Numéro de l'article
                      value: '3216159'
        '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:
      - Action
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.