PLP por URL
Usa uma URL publica de busca/listagem da Netshoes e pagina explicitamente.
{
"url": "https://www.netshoes.com.br/busca/tenis-adidas?sort=lowest-first",
"target": "netshoes.com.br",
"type": "plp",
"page": 2
} // docs
Extrai listagem de produtos (PLP) da Netshoes com URL pronta opcional ou busca por keyword, incluindo ordenacao, paginacao, tamanhos e seller do impression layer.
Nota importante: alguns campos podem retornar null em produção,
dependendo da página de origem. Nesta documentação, os exemplos de output são
preenchidos intencionalmente com valores não nulos para facilitar integração.
Quando a entidade consultada não existe na origem, o extract e a tool MCP retornam
200 com data: null e
notFound: true. Esse caso é tratado como resposta concluída,
não como erro de servidor.
curl -X POST https://api.geckoapi.com.br/v1/extract \
-H "Authorization: Bearer SUA_CHAVE" \
-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
}'
A mesma seam também aparece no MCP hospedado como uma tool dedicada.
Os argumentos reaproveitam os campos do extract, mas target e type
já ficam fixos pela tool.
Endpoint
POST /v1/mcp
Tool name
netshoes_com_br_plp
Auth
Bearer ou X-API-Key
{
"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"
}
}
}
Campos suportados nesta API do POST /v1/extract,
com regras específicas de obrigatoriedade e condicionais.
| Campo | Tipo | Status | Regra | Default | Exemplo |
|---|---|---|---|---|---|
| url URL alvo da extração. Para alguns PLPs pode ser omitida quando a API monta a URL a partir de outros campos. | string (URL) | Condicional | Opcional. Quando enviada, deve apontar para uma busca/listagem da Netshoes; quando ausente, keyword passa a ser obrigatoria. | - | https://www.mercadolivre.com.br/p/MLB123456 |
| keyword Palavra-chave para buscas PLP. Em Google Search ela representa a query enviada ao Google; em Booking PLP é obrigatória; em outros PLPs pode substituir a URL. | string | Condicional | Obrigatoria quando url nao for enviada. O backend monta a URL /busca/... automaticamente a partir dela. | - | iphone 15 pro max |
| sort Ordenacao para OLX PLP, Booking Review e Hoteis Review. OLX: relevance/date/price/biggest_price/price_relevance. Booking/Hoteis Review: most_relevant/newest_first/oldest_first/score_desc/score_asc. | "relevance" | "date" | "price" | "biggest_price" | "price_relevance" | "most_relevant" | "newest_first" | "oldest_first" | "score_desc" | "score_asc" | Opcional | Ordenacao suportada: relevance, date, price, biggest_price ou score_desc. | relevance | date |
| target Fonte alvo da extração. | enum | Obrigatório | Sempre obrigatorio no payload e deve ser netshoes.com.br. | - | mercadolivre.com.br |
| type Tipo da extração: pdp, idp, plp, quote, review ou places. | enum | Obrigatório | Sempre obrigatorio no payload e deve ser plp. | - | pdp |
| page Paginacao. Em PLP inicia em 1; em review (MercadoLivre, Booking e Hoteis) inicia em 0. | integer | Opcional | Paginacao 1-based. O backend aplica o parametro page na URL publica da Netshoes. | 1 | 2 |
Usa uma URL publica de busca/listagem da Netshoes e pagina explicitamente.
{
"url": "https://www.netshoes.com.br/busca/tenis-adidas?sort=lowest-first",
"target": "netshoes.com.br",
"type": "plp",
"page": 2
} Monta automaticamente a URL /busca/... a partir da keyword.
{
"keyword": "tenis adidas",
"target": "netshoes.com.br",
"type": "plp",
"page": 1
} Busca por keyword aplicando ordenacao suportada pelo gateway.
{
"keyword": "tenis adidas",
"target": "netshoes.com.br",
"type": "plp",
"sort": "price",
"page": 1
} Mapa de paths de saída com tipo esperado para esta API.
{
"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"
} {
"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 | Tipo | Descrição | Exemplo |
|---|---|---|---|
| data.extractedAt | string (ISO 8601) | Timestamp ISO 8601 da extracao. | 2026-04-17T12:00:00.000Z |
| data.items[].aggregateRating.rating | number | Nota media agregada do item. | 4.71 |
| data.items[].aggregateRating.reviewCount | number | Quantidade de reviews do item. | 9552 |
| data.items[].available | boolean | Indica se o card informa disponibilidade. | true |
| data.items[].brand | string | Marca do produto listado. | Adidas |
| data.items[].currency | "BRL" | Moeda padrao da listagem. | BRL |
| data.items[].department | string | Departamento do produto listado. | Casual |
| data.items[].discountAmount | number | Desconto absoluto calculado/em centavos convertidos para reais. | 120 |
| data.items[].discountPercent | number | Percentual de desconto do item. | 34 |
| data.items[].familyParentCodes[] | string | Outros parent codes relacionados ao item. | FB9-9335-006 |
| data.items[].installmentCount | number | Numero de parcelas exibido no card. | 5 |
| data.items[].name | string | Nome do produto listado. | Tênis Adidas Breaknet |
| data.items[].price | number | Preco de venda do item. | 229.99 |
| data.items[].productCode | string | Codigo pai/familia do produto listado. | FB9-9335 |
| data.items[].productType | string | Tipo de produto listado. | Tênis |
| data.items[].regularPrice | number | Preco de lista do item. | 349.99 |
| data.items[].sellerId | string | Identificador bruto do seller quando disponivel. | L_NETSHOES |
| data.items[].sellerName | string | Seller identificado no impression layer da Netshoes. | L_NETSHOES |
| data.items[].sizes[] | string | Tamanhos mostrados no card/listagem. | 39 |
| data.items[].sku | string | SKU ou codigo da variante principal exibida no card. | FB9-9335-205 |
| data.items[].stamps[] | string | Selos/badges comerciais publicados no card. | NetsGO |
| data.items[].thumbnail | string | Imagem principal/thumbnail do card. | https://static.netshoes.com.br/produtos/tenis-adidas-breaknet/05/FB9-9335-205/FB9-9335-205_zoom1.jpg |
| data.items[].url | string | URL absoluta do produto listado. | https://www.netshoes.com.br/p/tenis-adidas-breaknet-FB9-9335-205 |
| data.nextPage | number | Numero da proxima pagina quando disponivel. | 3 |
| data.nextPageUrl | string | URL publica pronta para requisitar a proxima pagina. | https://www.netshoes.com.br/busca/tenis-adidas?page=3&sort=lowest-first |
| data.offset | number | Deslocamento numerico derivado de pagina e pageSize. | 100 |
| data.page | number | Pagina atual 1-based. | 2 |
| data.query | string | Consulta textual associada a listagem. | tenis adidas |
| data.requestUrl | string | URL efetivamente requisitada ao upstream via Zyte. | https://www.netshoes.com.br/busca/tenis-adidas?page=2&sort=lowest-first |
| data.resultsPerPage | number | Quantidade de itens por pagina reportada no payload. | 100 |
| data.source | "netshoes.com.br" | Fonte logica do scraper. | netshoes.com.br |
| data.totalPages | number | Quantidade total de paginas disponiveis. | 24 |
| data.totalResults | number | Quantidade total de resultados informada pela Netshoes. | 2370 |
| data.type | "plp" | Tipo logico do scraper. | plp |
| data.url | string | URL publica usada como referencia da busca. | https://www.netshoes.com.br/busca/tenis-adidas?page=2&sort=lowest-first |
| executionId | string (uuid) | Identificador unico da execucao do worker. | exec_netshoes_plp_demo |
| notFound | boolean (optional; true when the upstream entity was not found and data is null) | Indicador opcional para respostas onde a entidade nao existe no upstream. | N/A |
| requestId | string (uuid) | Identificador unico da requisicao atendida pelo gateway. | req_netshoes_plp_demo |
Respostas com notFound: true não entram nesta tabela,
porque retornam sucesso HTTP 200.
| Status | errorCode | Quando acontece |
|---|---|---|
| 400 | INVALID_PAYLOAD | JSON inválido ou violação das regras de validação do payload. |
| 401 | UNAUTHORIZED | Header Authorization ausente ou token/chave inválida. |
| 402 | INSUFFICIENT_CREDITS | Saldo de créditos insuficiente para a API solicitada. |
| 403 | FORBIDDEN | Usuário sem acesso ou API temporariamente desabilitada. |
| 409 | EXECUTION_CONFLICT | executionId conflita com uma execução em estado incompatível. |
| 429 | RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTS | Limite de taxa ou limite de requisições em voo excedido. |
| 5xx | UPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_INVOCATION_FAILED / WORKER_FUNCTION_ERROR / WORKER_INVALID_RESPONSE / INTERNAL_ERROR | Falha de servidor no worker, provider/proxy ou gateway. Nesses casos os créditos são estornados automaticamente. |