Piloterr Action API
The Action API from Piloterr — 2 operation(s) for action.
The Action API from Piloterr — 2 operation(s) for action.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/piloterr-com:piloterr-com-action-api"
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.
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: 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.