# Point.P Product ## Overview | Property | Value | |----------|-------| | **Status** | active | | **Method** | `GET` | | **Endpoint** | `/v2/pointp/product` | | **Base URL** | `https://api.piloterr.com` | | **Credit Cost** | 2 credits per call | | **Documentation** | https://www.piloterr.com/library/pointp-product | ## Description Point.P Product API: scrape live `/p/` product pages from a full URL. Get title, images, EAN, pricing, specifications, and breadcrumbs as JSON via browser rendering. ## Authentication - **Key Name:** `x-api-key` - **Location:** HTTP Header - **Get an API key:** https://app.piloterr.com/register ## Example Request ```bash curl --location --request GET 'https://api.piloterr.com/v2/pointp/product' \ --header 'Content-Type: application/json' \ --header 'x-api-key: YOUR_API_KEY' ``` ## Example Response ### Thermo Loft insulation product on pointp.fr ```json { "ean": "5413031003370", "link": "https://www.pointp.fr/p/platre-isolation-ite/laine-de-verre-a-souffler-thermo-loft-knauf-insulation-sac-16-A3334230", "name": "Laine de verre à souffler Thermo Loft - sac de 16,6 kg", "brand": "KNAUF INSULATION", "media": [ "https://www.pointp.fr/asset/40/21/AST18564021-L.jpg", "https://www.pointp.fr/asset/40/21/AST18564021-M.jpg", "https://www.pointp.fr/asset/40/23/AST18564023-M.jpg" ], "pricing": { "unit": "Sac-sachet", "price": 59.9, "price_currency": "EUR" }, "reference": "1463175", "product_id": "A3334230", "breadcrumbs": [ "Point.P", "Plâtre, isolation, plafonds", "Isolation des toitures", "Isolation des combles" ], "description": "La laine de verre à souffler Thermo Loft de Knauf Insulation est conçue spécifiquement pour l'isolation thermique haute performance des combles perdus difficilement accessibles. Elle s'utilise en neuf comme en rénovation...", "specifications": [ { "name": "Matière", "value": "Laine de verre" }, { "name": "Type de produit", "value": "Laine de verre" }, { "name": "Gamme", "value": "THERMO LOFT" }, { "name": "Conditionnement du produit", "value": "Sac de 16,6 kg" }, { "name": "Pièce /ouvrage de destination", "value": "Combles perdus" }, { "name": "Zone d'utilisation", "value": "Plafond" } ] } ``` ## Documentation ## Overview The **Point.P Product API** scrapes a live Point.P product page (`/p/...-A{id}`) from a **full URL** and returns structured JSON: title, brand, description, EAN, images, pricing, specifications, and breadcrumbs. Point.P product pages require **browser rendering** to bypass anti-bot protection and load JSON-LD product data. Use **Point.P Search** first to discover `listing_url` values. ## Quickstart ``` GET https://api.piloterr.com/v2/pointp/product?query=https://www.pointp.fr/p/platre-isolation-ite/laine-de-verre-a-souffler-thermo-loft-knauf-insulation-sac-16-A3334230 ``` Via POST: ``` POST https://api.piloterr.com/v2/pointp/product Content-Type: application/json {"query": "https://www.pointp.fr/p/platre-isolation-ite/laine-de-verre-a-souffler-thermo-loft-knauf-insulation-sac-16-A3334230"} ``` ## Parameters | Parameter | Type | Required | Description | |---|---|---|---| | `query` | string | yes | Full Point.P product URL (`/p/` slug ending with `-A{id}`) | | `return_page_source` | boolean | no | Return raw HTML as `{"result": "..."}` (default: `false`) | ## Accepted URLs - Domain: `pointp.fr` only - Path must contain `/p/` with slug suffix `-A{id}` (e.g. `A3334230`) **Rejected (400):** URLs without `/p/`, slugs without `-A{id}`, non-Point.P domains. ## Response fields | Field | Type | Always present | Description | |---|---|---|---| | `product_id` | string | yes | URL suffix (e.g. `A3334230`) | | `reference` | string | no | Internal Point.P reference (≠ `product_id`) | | `name` | string | yes | Product title | | `link` | string | yes | Input URL | | `brand` | string | no | Brand from JSON-LD | | `description` | string | no | Product description from JSON-LD | | `ean` | string | no | EAN/GTIN from `productID: ean:...` | | `media` | string[] | yes | Image URLs (`/asset/` + JSON-LD) | | `pricing.price` | number | yes | Sale price; missing price → 404 | | `pricing.price_currency` | string | yes | ISO 4217 code (always `EUR`) | | `pricing.unit` | string | no | Sales unit | | `specifications` | array | yes | `{ name, value }[]` from JSON-LD | | `breadcrumbs` | string[] | yes | Category breadcrumb labels | ## Error codes | Code | Meaning | |---|---| | `400` | Missing or invalid `query` | | `404` | Resource not found or not parseable | | `500` | Rendering or parsing error | ## Notes - `product_id` (URL) and `reference` (display ref) are distinct identifiers. - Costs **2 credits** per call (browser rendering). ## Main use cases - **Product enrichment**: EAN, specs and images from a Point.P URL - **Building-materials catalogs**: sync Point.P SKUs into a PIM - **Price monitoring**: track `pricing.price` for target products - **Category mapping**: use `breadcrumbs` for taxonomy alignment