PLP by URL
Uses a public search/list URL from Netshoes and pages explicitly.
{
"url": "https://www.netshoes.com.br/busca/tenis-adidas?sort=lowest-first",
"target": "netshoes.com.br",
"type": "plp",
"page": 2
} // docs
Extracts product listing (PLP) from Netshoes with optional ready-made URL or search for keyword, including ordering, pagination, sizes and seller from the impression layer.
netshoes.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.netshoes.com.br/busca/tenis-adidas?sort=lowest-first",
"target": "netshoes.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": "netshoes_com_br_plp",
"arguments": {
"url": "https://www.netshoes.com.br/busca/tenis-adidas?sort=lowest-first",
"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 | Optional. When sent, it must point to a search/listing for Netshoes; when absent, keyword becomes mandatory. | - | https://www.netshoes.com.br/busca/tenis-adidas?sort=lowest-first |
| 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. The backend assembles URL automatically from /busca/.... | - | tenis adidas |
| sort Ordering for VivaReal, Chaves na Mão, OLX and Webmotors PLP, Booking Review and Hotels Review. VivaReal: relevance/date/price/biggest_price/biggest_area. Webmotors: relevance/price/biggest_price/year_desc/mileage_asc. OLX: relevance/date/price/biggest_price/price_relevance. Booking/Hotels Review: most_relevant/newest_first/oldest_first/score_desc/score_asc. | "relevance" | "date" | "price" | "biggest_price" | "biggest_area" | "price_relevance" | "most_relevant" | "newest_first" | "oldest_first" | "score_desc" | "score_asc" | "year_desc" | "mileage_asc" | Optional | Sorting supported: relevance, date, price, biggest_price or score_desc. | relevance | price |
| target Target source for extraction. | enum | Required | Always mandatory in the payload and must be netshoes.com.br. | - | netshoes.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 |
| 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 | Paginacao 1-based. The backend applies the parameter page to the public URL of Netshoes. | 1 | 2 |
Uses a public search/list URL from Netshoes and pages explicitly.
{
"url": "https://www.netshoes.com.br/busca/tenis-adidas?sort=lowest-first",
"target": "netshoes.com.br",
"type": "plp",
"page": 2
} Automatically assembles URL /busca/... from keyword.
{
"keyword": "tenis adidas",
"target": "netshoes.com.br",
"type": "plp",
"page": 1
} Searches for keyword applying sorting supported by the gateway.
{
"keyword": "tenis adidas",
"target": "netshoes.com.br",
"type": "plp",
"sort": "price",
"page": 1
} Leaf paths and expected types. Field names and enum values are part of the API contract.
{
"requestId": "string (uuid)",
"executionId": "string (uuid)",
"notFound": "boolean (optional; true when the upstream entity was not found and data is null)",
"data.source": "\"netshoes.com.br\"",
"data.type": "\"plp\"",
"data.url": "string",
"data.requestUrl": "string",
"data.extractedAt": "string (ISO 8601)",
"data.query": "string",
"data.totalResults": "number",
"data.page": "number",
"data.totalPages": "number",
"data.resultsPerPage": "number",
"data.offset": "number",
"data.nextPage": "number",
"data.nextPageUrl": "string",
"data.items[].url": "string",
"data.items[].sku": "string",
"data.items[].productCode": "string",
"data.items[].name": "string",
"data.items[].currency": "\"BRL\"",
"data.items[].price": "number",
"data.items[].regularPrice": "number",
"data.items[].discountAmount": "number",
"data.items[].discountPercent": "number",
"data.items[].installmentCount": "number",
"data.items[].sellerName": "string",
"data.items[].sellerId": "string",
"data.items[].brand": "string",
"data.items[].department": "string",
"data.items[].productType": "string",
"data.items[].sizes[]": "string",
"data.items[].available": "boolean",
"data.items[].aggregateRating.rating": "number",
"data.items[].aggregateRating.reviewCount": "number",
"data.items[].thumbnail": "string",
"data.items[].familyParentCodes[]": "string",
"data.items[].stamps[]": "string"
} 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": "req_netshoes_plp_demo",
"executionId": "exec_netshoes_plp_demo",
"data": {
"source": "netshoes.com.br",
"type": "plp",
"url": "https://www.netshoes.com.br/busca/tenis-adidas?page=2&sort=lowest-first",
"requestUrl": "https://www.netshoes.com.br/busca/tenis-adidas?page=2&sort=lowest-first",
"extractedAt": "2026-04-17T12:00:00.000Z",
"query": "tenis adidas",
"totalResults": 2370,
"page": 2,
"totalPages": 24,
"resultsPerPage": 100,
"offset": 100,
"nextPage": 3,
"nextPageUrl": "https://www.netshoes.com.br/busca/tenis-adidas?page=3&sort=lowest-first",
"items": [
{
"url": "https://www.netshoes.com.br/p/tenis-adidas-breaknet-FB9-9335-205",
"sku": "FB9-9335-205",
"productCode": "FB9-9335",
"name": "Tênis Adidas Breaknet",
"currency": "BRL",
"currencyRaw": "R$",
"price": 229.99,
"regularPrice": 349.99,
"discountAmount": 120,
"discountPercent": 34,
"installmentCount": 5,
"sellerName": "L_NETSHOES",
"sellerId": "L_NETSHOES",
"brand": "Adidas",
"department": "Casual",
"productType": "Tênis",
"sizes": [
"39",
"40",
"41"
],
"available": true,
"aggregateRating": {
"rating": 4.71,
"reviewCount": 9552
},
"thumbnail": "https://static.netshoes.com.br/produtos/tenis-adidas-breaknet/05/FB9-9335-205/FB9-9335-205_zoom1.jpg",
"familyParentCodes": [
"FB9-9335-006"
],
"stamps": [
"NetsGO"
]
}
]
}
} | Path | Type | Description | Example |
|---|---|---|---|
| data.extractedAt | string (ISO 8601) | Timestamp ISO 8601 of the extraction. | 2026-04-17T12:00:00.000Z |
| data.items[].aggregateRating.rating | number | Average aggregate grade of the item. | 4.71 |
| data.items[].aggregateRating.reviewCount | number | Number of reviews for the item. | 9552 |
| data.items[].available | boolean | Indicates whether the card reports availability. | true |
| data.items[].brand | string | Brand of the listed product. | Adidas |
| data.items[].currency | "BRL" | Default currency of the listing. | BRL |
| data.items[].department | string | Department of the listed product. | Casual |
| data.items[].discountAmount | number | Absolute discount calculated/in cents converted to reais. | 120 |
| data.items[].discountPercent | number | Item discount percentage. | 34 |
| data.items[].familyParentCodes[] | string | Other parent codes related to the item. | FB9-9335-006 |
| data.items[].installmentCount | number | Number of installments displayed on the card. | 5 |
| data.items[].name | string | Product name listed. | Tênis Adidas Breaknet |
| data.items[].price | number | Selling price of the item. | 229.99 |
| data.items[].productCode | string | Parent/family code of the listed product. | FB9-9335 |
| data.items[].productType | string | Product type listed. | Tênis |
| data.items[].regularPrice | number | List price of the item. | 349.99 |
| data.items[].sellerId | string | Raw identifier of seller when available. | L_NETSHOES |
| data.items[].sellerName | string | Seller identified in the impression layer of Netshoes. | L_NETSHOES |
| data.items[].sizes[] | string | Sizes shown on card/listing. | 39 |
| data.items[].sku | string | SKU or main variant code displayed on the card. | FB9-9335-205 |
| data.items[].stamps[] | string | Commercial stamps/badges published on the card. | NetsGO |
| data.items[].thumbnail | string | Main image/thumbnail of the card. | https://static.netshoes.com.br/produtos/tenis-adidas-breaknet/05/FB9-9335-205/FB9-9335-205_zoom1.jpg |
| data.items[].url | string | URL absolute value of the listed product. | https://www.netshoes.com.br/p/tenis-adidas-breaknet-FB9-9335-205 |
| data.nextPage | number | Next page number when available. | 3 |
| data.nextPageUrl | string | URL publishes ready to request the next page. | https://www.netshoes.com.br/busca/tenis-adidas?page=3&sort=lowest-first |
| data.offset | number | Numeric offset derived from page and pageSize. | 100 |
| data.page | number | Current page 1-based. | 2 |
| data.query | string | Textual query associated with the listing. | tenis adidas |
| data.requestUrl | string | Same value as `data.url`; never exposes the queried internal endpoint. | https://www.netshoes.com.br/busca/tenis-adidas?page=2&sort=lowest-first |
| data.resultsPerPage | number | Number of items per page reported in the payload. | 100 |
| data.source | "netshoes.com.br" | Scraper logic source. | netshoes.com.br |
| data.totalPages | number | Total number of pages available. | 24 |
| data.totalResults | number | Total number of results reported by Netshoes. | 2370 |
| data.type | "plp" | Logical type of the scraper. | plp |
| data.url | string | URL is published as a search reference. | https://www.netshoes.com.br/busca/tenis-adidas?page=2&sort=lowest-first |
| executionId | string (uuid) | Unique identifier of the worker execution. | exec_netshoes_plp_demo |
| notFound | boolean (optional; true when the upstream entity was not found and data is null) | Optional indicator for responses where the entity does not exist upstream. | N/A |
| requestId | string (uuid) | Unique identifier of the request served by the gateway. | req_netshoes_plp_demo |
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. |