PLP by URL
Informs the public URL of the search and the page explicitly.
{
"url": "https://www.casasbahia.com.br/resultado-da-busca/?query=iphone+16&page=2",
"target": "casasbahia.com.br",
"type": "plp",
"page": 2
} // docs
Extracts product listing (PLP) from Casas Bahia, with pagination and optional public URL from keyword.
casasbahia.com.br:plp · 1 credit per request
Standard credit cost. Your account pricing is shown in the sandbox.
Try this operation in the sandboxcurl -X POST https://api.geckoapi.com.br/v1/extract \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.casasbahia.com.br/resultado-da-busca/?query=iphone+16&page=2",
"target": "casasbahia.com.br",
"type": "plp",
"page": 2
}' Keep your API key on your server. See the quickstart for authentication and response handling.
The hosted MCP tool fixes target and type for this operation. Its remaining arguments use the same input rules as Extract.
POST /v1/mcp · Bearer or X-API-Key authentication
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "casasbahia_com_br_plp",
"arguments": {
"url": "https://www.casasbahia.com.br/resultado-da-busca/?query=iphone+16&page=2",
"page": 2,
"executionId": "exec_example_123"
}
}
} Conditional fields depend on the alternatives and constraints in the rule column. Fields marked unsupported are omitted.
| Field | Type | Requirement | Rule | Default | Example |
|---|---|---|---|---|---|
| url URL extraction target. For some PLPs it can be omitted when API assembles URL from other fields. | string (URL) | Conditional | Mandatory only when keyword is not sent. | - | https://www.casasbahia.com.br/resultado-da-busca/?query=iphone+16&page=2 |
| keyword Keyword for PLP searches. In Google Search it represents the query sent to Google; in Booking PLP is mandatory; in other PLPs it can replace URL. | string | Conditional | Mandatory when url is not sent. | - | iphone 16 |
| target Target source for extraction. | enum | Required | Always mandatory in the payload and must be casasbahia.com.br. | casasbahia.com.br | casasbahia.com.br |
| type Extraction type: pdp, idp, plp, ilp, quote, review or places. | enum | Required | Always mandatory in the payload and must be plp. | plp | plp |
| page Pagination. In PLP, including Trivago, and in Reclame AQUI ILP starts in 1; in review (MercadoLivre, Booking and Hotels) starts in 0. The Reclame AQUI ILP even accepts the page 100. | integer | Optional | Supported for PLP; must be integer >= 1. | 1 | 2 |
Informs the public URL of the search and the page explicitly.
{
"url": "https://www.casasbahia.com.br/resultado-da-busca/?query=iphone+16&page=2",
"target": "casasbahia.com.br",
"type": "plp",
"page": 2
} Gateway assembles URL automatically publishes from keyword.
{
"keyword": "iphone 16",
"target": "casasbahia.com.br",
"type": "plp",
"page": 1
} Leaf paths and expected types. Field names and enum values are part of the API contract.
{
"requestId": "string (uuid)",
"executionId": "string (uuid)",
"data.source": "string",
"data.type": "string",
"data.url": "string",
"data.requestUrl": "string",
"data.extractedAt": "string (ISO 8601)",
"data.query": "string",
"data.totalResults": "integer",
"data.totalPages": "integer",
"data.page": "integer",
"data.resultsPerPage": "integer",
"data.offset": "integer",
"data.nextPage": "integer",
"data.nextPageUrl": "string",
"data.items[].url": "string",
"data.items[].productId": "string",
"data.items[].sku": "string",
"data.items[].name": "string",
"data.items[].available": "boolean",
"data.items[].sellerId": "string",
"data.items[].brand": "string",
"data.items[].thumbnail": "string",
"data.items[].aggregateRating.rating": "number",
"data.items[].aggregateRating.reviewCount": "integer",
"data.items[].sponsored": "boolean"
} Illustrative response. Product names, reviews and other source content retain their original language. Missing and null values do not imply zero stock, free shipping or zero reviews.
{
"requestId": "d68564d2-34bc-47e6-a1a6-796794f8463b",
"executionId": "f7b0f7f6-3363-4958-9f7e-6c0e0d189874",
"data": {
"source": "casasbahia.com.br",
"type": "plp",
"url": "https://www.casasbahia.com.br/resultado-da-busca/?query=iphone+16&page=1",
"requestUrl": "https://www.casasbahia.com.br/resultado-da-busca/?query=iphone+16&page=1",
"extractedAt": "2026-04-18T00:00:00.000Z",
"query": "iphone 16",
"totalResults": 25,
"totalPages": 3,
"page": 1,
"resultsPerPage": 10,
"offset": 0,
"nextPage": 2,
"nextPageUrl": "https://www.casasbahia.com.br/resultado-da-busca/?query=iphone+16&page=2",
"items": [
{
"url": "https://www.casasbahia.com.br/apple-iphone-16-128gb-61-48mp-preto/p/55067621",
"productId": "80872678",
"sku": "55067621",
"name": "Apple iPhone 16 128GB 6,1 48MP Preto",
"available": true,
"sellerId": "228278",
"brand": "Apple",
"thumbnail": "https://imgs.casasbahia.com.br/55067621/1xg.jpg",
"aggregateRating": {
"rating": 4.9,
"reviewCount": 128
},
"sponsored": true
}
]
}
} | Path | Type | Description | Example |
|---|---|---|---|
| data.extractedAt | string (ISO 8601) | Timestamp ISO at which the extraction was completed. | 2026-04-18T00:00:00.000Z |
| data.items[].aggregateRating.rating | number | Aggregate item grade when present. | 4.9 |
| data.items[].aggregateRating.reviewCount | integer | Number of aggregated reviews when available. | 128 |
| data.items[].available | boolean | Standard availability of the listed item. | true |
| data.items[].brand | string | Standardized mark of the listed item. | Apple |
| data.items[].name | string | Title of the listed item. | Apple iPhone 16 128GB 6,1 48MP Preto |
| data.items[].productId | string | Internal product identifier at source. | 80872678 |
| data.items[].sellerId | string | Normalized identifier of the item's main seller. | 228278 |
| data.items[].sku | string | SKU of the listed item. | 55067621 |
| data.items[].sponsored | boolean | Indicates whether the result was marked as sponsored. | true |
| data.items[].thumbnail | string | Main thumbnail of the listed item. | https://imgs.casasbahia.com.br/55067621/1xg.jpg |
| data.items[].url | string | URL publishes summary of the listed product. | https://www.casasbahia.com.br/apple-iphone-16-128gb-61-48mp-preto/p/55067621 |
| data.nextPage | integer | Number of the next page, if any. | 2 |
| data.nextPageUrl | string | URL publishes synthesized for the next page, when it exists. | https://www.casasbahia.com.br/resultado-da-busca/?query=iphone+16&page=2 |
| data.offset | integer | Offset calculated from page and page size. | 0 |
| data.page | integer | Page actually executed. | 1 |
| data.query | string | Final resolved keyword for the search. | iphone 16 |
| data.requestUrl | string | Same value as `data.url`; never exposes the queried internal endpoint. | https://www.casasbahia.com.br/resultado-da-busca/?query=iphone+16&page=1 |
| data.resultsPerPage | integer | Number of items per page used by operation. | 10 |
| data.source | string | Normalized extraction source. | casasbahia.com.br |
| data.totalPages | integer | Total number of pages calculated by the worker. | 3 |
| data.totalResults | integer | Total number of results returned by the source. | 25 |
| data.type | string | Type of operation executed. | plp |
| data.url | string | URL is the final publication used as a reference for the listing. | https://www.casasbahia.com.br/resultado-da-busca/?query=iphone+16&page=1 |
| executionId | string (uuid) | Unique identifier of the worker execution for traceability. | f7b0f7f6-3363-4958-9f7e-6c0e0d189874 |
| requestId | string (uuid) | Unique identifier of the request HTTP in GeckoAPI. | d68564d2-34bc-47e6-a1a6-796794f8463b |
When supported by this operation, an entity not found upstream can return HTTP 200 with data: null and notFound: true. Check the documented response fields before interpreting an empty result. Source-specific behavior and exceptions are described above.
| HTTP status | Error code | Meaning |
|---|---|---|
| 400 | INVALID_PAYLOAD | Invalid JSON or a request that violates the documented validation rules. |
| 401 | UNAUTHORIZED | Missing authorization or an invalid API key or token. |
| 402 | INSUFFICIENT_CREDITS | The account has insufficient credits for this operation. |
| 403 | FORBIDDEN | The account does not have access, or the API is temporarily disabled. |
| 409 | EXECUTION_CONFLICT | The execution identifier conflicts with an incompatible execution state. |
| 429 | RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTS | A rate limit or simultaneous request limit was exceeded. |
| 5xx | UPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_FUNCTION_ERROR | An upstream, worker or gateway failure. Failed requests follow the platform refund policy. |