PLP por keyword + CEP
Fluxo recomendado: informe keyword e CEP; o worker geocodifica o CEP antes de consultar o endpoint do iFood.
{
"target": "ifood.com.br",
"type": "plp",
"keyword": "marmita",
"zipCode": "80010-000",
"page": 1
} // docs
Extrai listagem de lojas do iFood por keyword e CEP.
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.
curl -X POST https://api.geckoapi.com.br/v1/extract \
-H "Authorization: Bearer SUA_CHAVE" \
-H "Content-Type: application/json" \
-d '{
"target": "ifood.com.br",
"type": "plp",
"keyword": "marmita",
"zipCode": "80010-000",
"page": 1
}'
Campos suportados nesta API do POST /v1/extract,
com regras específicas de obrigatoriedade e condicionais.
| Campo | Tipo | Status | Regra | Default | Exemplo |
|---|---|---|---|---|---|
| keyword Palavra-chave para buscas PLP. Em Booking PLP é obrigatória; em outros PLPs pode substituir a URL. | string | Obrigatório | Obrigatoria para busca PLP do iFood. | - | iphone 15 pro max |
| zipCode CEP brasileiro usado na iFood PLP para geocodificacao automatica (latitude/longitude). | string (CEP) | Obrigatório | CEP brasileiro usado para geocodificar latitude/longitude automaticamente. | - | 80010-000 |
| target Fonte alvo da extração. | enum | Obrigatório | Sempre obrigatorio no payload e deve ser ifood.com.br. | - | mercadolivre.com.br |
| type Tipo da extração: pdp, plp, review ou places. | enum | Obrigatório | Sempre obrigatorio no payload e deve ser plp. | - | pdp |
| page Paginação. Em PLP inicia em 1; em MercadoLivre review inicia em 0. | integer | Opcional | Suportado para PLP; deve ser inteiro >= 1. | 1 | 2 |
Fluxo recomendado: informe keyword e CEP; o worker geocodifica o CEP antes de consultar o endpoint do iFood.
{
"target": "ifood.com.br",
"type": "plp",
"keyword": "marmita",
"zipCode": "80010-000",
"page": 1
} Mapa de paths de saída com tipo esperado para esta API.
{
"requestId": "string (uuid)",
"executionId": "string (uuid)",
"data.source": "string",
"data.type": "string",
"data.url": "string",
"data.requestUrl": "string",
"data.extractedAt": "string (iso datetime)",
"data.keyword": "string",
"data.query": "string",
"data.zipCode": "string",
"data.latitude": "number",
"data.longitude": "number",
"data.geocoderProvider": "string",
"data.sectionId": "string",
"data.page": "number",
"data.resultsPerPage": "number",
"data.offset": "number",
"data.primaryResults": "number",
"data.nextPage": "number",
"data.nextPageUrl": "string",
"data.nextCursor": "string",
"data.items[].position": "number",
"data.items[].id": "string",
"data.items[].name": "string",
"data.items[].url": "string",
"data.items[].action": "string",
"data.items[].merchantType": "string",
"data.items[].slug": "string",
"data.items[].mainCategory": "string",
"data.items[].available": "boolean",
"data.items[].availableForScheduling": "boolean",
"data.items[].isIfoodDelivery": "boolean",
"data.items[].isFavorite": "boolean",
"data.items[].isNew": "boolean",
"data.items[].isSuperRestaurant": "boolean",
"data.items[].supportsTracking": "boolean",
"data.items[].currency": "string",
"data.items[].userRating": "number",
"data.items[].distanceKm": "number",
"data.items[].thumbnail": "string",
"data.items[].deliveryInfo.type": "string",
"data.items[].deliveryInfo.mode": "string",
"data.items[].deliveryInfo.feeCents": "number",
"data.items[].deliveryInfo.fee": "number",
"data.items[].deliveryInfo.timeMinMinutes": "number",
"data.items[].deliveryInfo.timeMaxMinutes": "number",
"data.items[].deliveryInfo.nextSchedulingSlotStartTime": "string",
"data.items[].deliveryInfo.nextSchedulingSlotEndTime": "string",
"data.items[].formattedContent.firstLine": "string",
"data.items[].formattedContent.secondLine": "string"
} {
"requestId": "55555555-1111-4111-8111-555555555555",
"executionId": "55555555-2222-4222-8222-555555555555",
"data": {
"source": "ifood.com.br",
"type": "plp",
"url": "https://cw-marketplace.ifood.com.br/v2/cardstack/search/results?alias=SEARCH_RESULTS_MERCHANT_TAB_GLOBAL&channel=IFOOD&size=20&term=marmita&zipCode=80010000",
"requestUrl": "https://cw-marketplace.ifood.com.br/v2/cardstack/search/results?alias=SEARCH_RESULTS_MERCHANT_TAB_GLOBAL&latitude=-25.4284&longitude=-49.2733&channel=IFOOD&size=20&term=marmita",
"extractedAt": "2026-02-18T13:25:00.000Z",
"keyword": "marmita",
"query": "marmita",
"zipCode": "80010000",
"latitude": -25.4284,
"longitude": -49.2733,
"geocoderProvider": "brasilapi",
"sectionId": "7519c970-d372-4552-b767-f0616e25697c",
"page": 1,
"resultsPerPage": 20,
"offset": 0,
"primaryResults": 20,
"nextPage": 2,
"nextPageUrl": "https://cw-marketplace.ifood.com.br/v2/cardstack/search/results?alias=SEARCH_RESULTS_MERCHANT_TAB_GLOBAL&latitude=-25.4284&longitude=-49.2733&channel=IFOOD&size=20&term=marmita§ion=7519c970-d372-4552-b767-f0616e25697c&cursor=BHBzAMjA7vQBAKCz_IMTAMKA6ucPAKi31bceAPilq-INAMLBv_YWAKSVkrcaAOClztEOAAIAyAE%3D",
"nextCursor": "BHBzAMjA7vQBAKCz_IMTAMKA6ucPAKi31bceAPilq-INAMLBv_YWAKSVkrcaAOClztEOAAIAyAE=",
"items": [
{
"position": 1,
"id": "9a7ea6c8-4493-44f0-a0be-f892b0a16941",
"name": "Oh My Bread Padaria Artesanal Boulevard Curitibano",
"url": "https://www.ifood.com.br/merchant?identifier=9a7ea6c8-4493-44f0-a0be-f892b0a16941&name=Oh%20My%20Bread%20Padaria%20Artesanal%20Boulevard%20Curitibano&slug=curitiba-pr/oh-my-bread-padaria-artesanal-boulevard-curitibano-vila-izabel&deliveryMethodCode=DEFAULT",
"action": "merchant?identifier=9a7ea6c8-4493-44f0-a0be-f892b0a16941&name=Oh%20My%20Bread%20Padaria%20Artesanal%20Boulevard%20Curitibano&slug=curitiba-pr/oh-my-bread-padaria-artesanal-boulevard-curitibano-vila-izabel&deliveryMethodCode=DEFAULT",
"merchantType": "merchant",
"slug": "curitiba-pr/oh-my-bread-padaria-artesanal-boulevard-curitibano-vila-izabel",
"mainCategory": "Padaria",
"available": true,
"availableForScheduling": true,
"isIfoodDelivery": true,
"isFavorite": false,
"isNew": true,
"isSuperRestaurant": true,
"supportsTracking": true,
"currency": "BRL",
"userRating": 4.9,
"distanceKm": 2.87,
"thumbnail": "https://static-images.ifood.com.br/image/upload/logosgde/9a7ea6c8-4493-44f0-a0be-f892b0a16941/202512221122_PVbJ_i.jpg",
"deliveryInfo": {
"type": "SCHEDULE",
"mode": "DEFAULT",
"feeCents": 1099,
"fee": 10.99,
"timeMinMinutes": 41,
"timeMaxMinutes": 51,
"nextSchedulingSlotStartTime": "2026-02-18T12:00:00-03:00",
"nextSchedulingSlotEndTime": "2026-02-18T12:30:00-03:00"
},
"formattedContent": {
"firstLine": "[#FFC347: Novidade!] [#666666: •] [#666666: Padaria] [#666666: •] [#666666: 2,9 km]",
"secondLine": "Entrega rapida"
}
}
]
}
} | Path | Tipo | Descrição | Exemplo |
|---|---|---|---|
| data.extractedAt | string (iso datetime) | Campo data.extractedAt retornado no payload de resposta. | 2026-02-18T13:25:00.000Z |
| data.geocoderProvider | string | Campo data.geocoderProvider retornado no payload de resposta. | brasilapi |
| data.items[].action | string | Campo data.items[].action retornado no payload de resposta. | merchant?identifier=9a7ea6c8-4493-44f0-a0be-f892b0a16941&name=Oh%20My%20Bread%20Padaria%20Artesanal%20Boulevard%20Curitibano&slug=curitiba-pr/oh-my-bread-padaria-artesanal-boulevard-curitibano-vila-izabel&deliveryMethodCode=DEFAULT |
| data.items[].available | boolean | Campo data.items[].available retornado no payload de resposta. | true |
| data.items[].availableForScheduling | boolean | Campo data.items[].availableForScheduling retornado no payload de resposta. | true |
| data.items[].currency | string | Campo data.items[].currency retornado no payload de resposta. | BRL |
| data.items[].deliveryInfo.fee | number | Campo data.items[].deliveryInfo.fee retornado no payload de resposta. | 10.99 |
| data.items[].deliveryInfo.feeCents | number | Campo data.items[].deliveryInfo.feeCents retornado no payload de resposta. | 1099 |
| data.items[].deliveryInfo.mode | string | Campo data.items[].deliveryInfo.mode retornado no payload de resposta. | DEFAULT |
| data.items[].deliveryInfo.nextSchedulingSlotEndTime | string | Campo data.items[].deliveryInfo.nextSchedulingSlotEndTime retornado no payload de resposta. | 2026-02-18T12:30:00-03:00 |
| data.items[].deliveryInfo.nextSchedulingSlotStartTime | string | Campo data.items[].deliveryInfo.nextSchedulingSlotStartTime retornado no payload de resposta. | 2026-02-18T12:00:00-03:00 |
| data.items[].deliveryInfo.timeMaxMinutes | number | Campo data.items[].deliveryInfo.timeMaxMinutes retornado no payload de resposta. | 51 |
| data.items[].deliveryInfo.timeMinMinutes | number | Campo data.items[].deliveryInfo.timeMinMinutes retornado no payload de resposta. | 41 |
| data.items[].deliveryInfo.type | string | Campo data.items[].deliveryInfo.type retornado no payload de resposta. | SCHEDULE |
| data.items[].distanceKm | number | Campo data.items[].distanceKm retornado no payload de resposta. | 2.87 |
| data.items[].formattedContent.firstLine | string | Campo data.items[].formattedContent.firstLine retornado no payload de resposta. | [#FFC347: Novidade!] [#666666: •] [#666666: Padaria] [#666666: •] [#666666: 2,9 km] |
| data.items[].formattedContent.secondLine | string | Campo data.items[].formattedContent.secondLine retornado no payload de resposta. | Entrega rapida |
| data.items[].id | string | Campo data.items[].id retornado no payload de resposta. | 9a7ea6c8-4493-44f0-a0be-f892b0a16941 |
| data.items[].isFavorite | boolean | Campo data.items[].isFavorite retornado no payload de resposta. | false |
| data.items[].isIfoodDelivery | boolean | Campo data.items[].isIfoodDelivery retornado no payload de resposta. | true |
| data.items[].isNew | boolean | Campo data.items[].isNew retornado no payload de resposta. | true |
| data.items[].isSuperRestaurant | boolean | Campo data.items[].isSuperRestaurant retornado no payload de resposta. | true |
| data.items[].mainCategory | string | Campo data.items[].mainCategory retornado no payload de resposta. | Padaria |
| data.items[].merchantType | string | Campo data.items[].merchantType retornado no payload de resposta. | merchant |
| data.items[].name | string | Campo data.items[].name retornado no payload de resposta. | Oh My Bread Padaria Artesanal Boulevard Curitibano |
| data.items[].position | number | Campo data.items[].position retornado no payload de resposta. | 1 |
| data.items[].slug | string | Campo data.items[].slug retornado no payload de resposta. | curitiba-pr/oh-my-bread-padaria-artesanal-boulevard-curitibano-vila-izabel |
| data.items[].supportsTracking | boolean | Campo data.items[].supportsTracking retornado no payload de resposta. | true |
| data.items[].thumbnail | string | Campo data.items[].thumbnail retornado no payload de resposta. | https://static-images.ifood.com.br/image/upload/logosgde/9a7ea6c8-4493-44f0-a0be-f892b0a16941/202512221122_PVbJ_i.jpg |
| data.items[].url | string | Campo data.items[].url retornado no payload de resposta. | https://www.ifood.com.br/merchant?identifier=9a7ea6c8-4493-44f0-a0be-f892b0a16941&name=Oh%20My%20Bread%20Padaria%20Artesanal%20Boulevard%20Curitibano&slug=curitiba-pr/oh-my-bread-padaria-artesanal-boulevard-curitibano-vila-izabel&deliveryMethodCode=DEFAULT |
| data.items[].userRating | number | Campo data.items[].userRating retornado no payload de resposta. | 4.9 |
| data.keyword | string | Campo data.keyword retornado no payload de resposta. | marmita |
| data.latitude | number | Campo data.latitude retornado no payload de resposta. | -25.4284 |
| data.longitude | number | Campo data.longitude retornado no payload de resposta. | -49.2733 |
| data.nextCursor | string | Campo data.nextCursor retornado no payload de resposta. | BHBzAMjA7vQBAKCz_IMTAMKA6ucPAKi31bceAPilq-INAMLBv_YWAKSVkrcaAOClztEOAAIAyAE= |
| data.nextPage | number | Campo data.nextPage retornado no payload de resposta. | 2 |
| data.nextPageUrl | string | Campo data.nextPageUrl retornado no payload de resposta. | https://cw-marketplace.ifood.com.br/v2/cardstack/search/results?alias=SEARCH_RESULTS_MERCHANT_TAB_GLOBAL&latitude=-25.4284&longitude=-49.2733&channel=IFOOD&size=20&term=marmita§ion=7519c970-d372-4552-b767-f0616e25697c&cursor=BHBzAMjA7vQBAKCz_IMTAMKA6ucPAKi31bceAPilq-INAMLBv_YWAKSVkrcaAOClztEOAAIAyAE%3D |
| data.offset | number | Campo data.offset retornado no payload de resposta. | 0 |
| data.page | number | Campo data.page retornado no payload de resposta. | 1 |
| data.primaryResults | number | Campo data.primaryResults retornado no payload de resposta. | 20 |
| data.query | string | Campo data.query retornado no payload de resposta. | marmita |
| data.requestUrl | string | Campo data.requestUrl retornado no payload de resposta. | https://cw-marketplace.ifood.com.br/v2/cardstack/search/results?alias=SEARCH_RESULTS_MERCHANT_TAB_GLOBAL&latitude=-25.4284&longitude=-49.2733&channel=IFOOD&size=20&term=marmita |
| data.resultsPerPage | number | Campo data.resultsPerPage retornado no payload de resposta. | 20 |
| data.sectionId | string | Campo data.sectionId retornado no payload de resposta. | 7519c970-d372-4552-b767-f0616e25697c |
| data.source | string | Campo data.source retornado no payload de resposta. | ifood.com.br |
| data.type | string | Campo data.type retornado no payload de resposta. | plp |
| data.url | string | Campo data.url retornado no payload de resposta. | https://cw-marketplace.ifood.com.br/v2/cardstack/search/results?alias=SEARCH_RESULTS_MERCHANT_TAB_GLOBAL&channel=IFOOD&size=20&term=marmita&zipCode=80010000 |
| data.zipCode | string | Campo data.zipCode retornado no payload de resposta. | 80010000 |
| executionId | string (uuid) | Campo executionId retornado no payload de resposta. | 55555555-2222-4222-8222-555555555555 |
| requestId | string (uuid) | Campo requestId retornado no payload de resposta. | 55555555-1111-4111-8111-555555555555 |
| 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. |