PLP by CEP
Recommended flow: send CEP only. The backend geocodes, resolves cityId + areaId, and queries PLP internally.
{
"target": "pede.ai",
"type": "plp",
"zipCode": "45300-000"
} // docs
Extracts traders from pede.ai from a Brazilian CEP. The backend resolves cityId + areaId internally via /v1/extract/lookups/pede.ai/resolve-zip-code and returns only synthetic public URLs of pede.ai.
pede.ai: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 '{
"target": "pede.ai",
"type": "plp",
"zipCode": "45300-000"
}' 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": "pede_ai_plp",
"arguments": {
"zipCode": "45300-000",
"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 |
|---|---|---|---|---|---|
| zipCode CEP used in APIs with automatic geographic resolution. API accepts with or without a hyphen and normalizes to 8 digits. | string (CEP) | Required | Mandatory in pede.ai PLP. Accepts CEP with or without hyphen; API normalizes the value and resolves cityId + areaId automatically. | - | 45300-000 |
| target Target source for extraction. | enum | Required | Always mandatory in the payload and must be pede.ai. | - | pede.ai |
| type Extraction type: pdp, idp, plp, ilp, quote, review or places. | enum | Required | Always mandatory in the payload and must be plp. | - | plp |
Recommended flow: send CEP only. The backend geocodes, resolves cityId + areaId, and queries PLP internally.
{
"target": "pede.ai",
"type": "plp",
"zipCode": "45300-000"
} 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 datetime)",
"data.cityId": "string",
"data.areaId": "string",
"data.city": "string",
"data.state": "string",
"data.neighborhood": "string",
"data.locationResolution.zipCode": "string",
"data.locationResolution.formattedZipCode": "string",
"data.locationResolution.state": "string",
"data.locationResolution.stateName": "string",
"data.locationResolution.city": "string",
"data.locationResolution.neighborhood": "string",
"data.locationResolution.cityId": "string",
"data.locationResolution.areaId": "string",
"data.locationResolution.geocoderProvider": "string",
"data.locationResolution.latitude": "number",
"data.locationResolution.longitude": "number",
"data.locationResolution.matchStrategy": "string",
"data.locationResolution.rankedCandidates[].areaId": "string",
"data.locationResolution.rankedCandidates[].cityId": "string",
"data.locationResolution.rankedCandidates[].city": "string",
"data.locationResolution.rankedCandidates[].state": "string",
"data.locationResolution.rankedCandidates[].neighborhood": "string",
"data.locationResolution.rankedCandidates[].minimumRate": "number",
"data.locationResolution.rankedCandidates[].typeOperation": "string",
"data.locationResolution.rankedCandidates[].externalProvider": "string",
"data.locationResolution.rankedCandidates[].active": "boolean",
"data.locationResolution.rankedCandidates[].matchStrategy": "string",
"data.locationResolution.rankedCandidates[].matchedLabel": "string",
"data.locationResolution.rankedCandidates[].score": "number",
"data.categories[].id": "number",
"data.categories[].name": "string",
"data.openCount": "number",
"data.closedCount": "number",
"data.items[].position": "number",
"data.items[].merchantId": "string",
"data.items[].name": "string",
"data.items[].slug": "string",
"data.items[].logo": "string",
"data.items[].banner": "string",
"data.items[].isOpen": "boolean",
"data.items[].deliveryTimeText": "string",
"data.items[].deliveryTimeMinMinutes": "number",
"data.items[].deliveryTimeMaxMinutes": "number",
"data.items[].deliveryTimeAverageMinutes": "number",
"data.items[].deliveryFee": "number",
"data.items[].minimumOrderValue": "number",
"data.items[].freeDeliveryMinimum": "number",
"data.items[].rating": "number",
"data.items[].ratingDisplay": "string",
"data.items[].acceptsCoupon": "boolean",
"data.items[].acceptsOnlinePayment": "boolean",
"data.items[].acceptsInPersonPayment": "boolean",
"data.items[].acceptsPix": "boolean",
"data.items[].acceptsNuPay": "boolean",
"data.items[].acceptsPicPay": "boolean",
"data.items[].isNew": "boolean",
"data.items[].isBrief": "boolean",
"data.items[].isExclusive": "boolean",
"data.items[].deliveryDisabled": "boolean",
"data.items[].offerDiscount": "number",
"data.items[].fullCompanyOffer": "boolean",
"data.items[].storeDisplayType": "number",
"data.items[].storeTypes[].id": "number",
"data.items[].storeTypes[].name": "string",
"data.items[].categories[].id": "number",
"data.items[].categories[].name": "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": "77777777-1111-4111-8111-777777777777",
"executionId": "77777777-2222-4222-8222-777777777777",
"data": {
"source": "pede.ai",
"type": "plp",
"url": "https://pede.ai/lista?cep=45300-000",
"requestUrl": "https://pede.ai/lista?cep=45300-000",
"extractedAt": "2026-04-17T18:00:00.000Z",
"cityId": "508",
"areaId": "19590",
"city": "Amargosa",
"state": "BA",
"neighborhood": "Alto da Bela Vista",
"locationResolution": {
"zipCode": "45300000",
"formattedZipCode": "45300-000",
"state": "BA",
"stateName": "Bahia",
"city": "Amargosa",
"neighborhood": "Alto da Bela Vista",
"cityId": "508",
"areaId": "19590",
"geocoderProvider": "brasilapi",
"latitude": -13.0303,
"longitude": -39.6031,
"matchStrategy": "exact",
"rankedCandidates": [
{
"areaId": "19590",
"cityId": "508",
"city": "Amargosa",
"state": "BA",
"neighborhood": "Alto da Bela Vista",
"minimumRate": 5,
"typeOperation": "OPL",
"externalProvider": "Leve.ai",
"active": true,
"matchStrategy": "exact",
"matchedLabel": "Alto da Bela Vista",
"score": 400
}
]
},
"categories": [
{
"id": 4,
"name": "Almoco",
"image": "https://cdn.aiboodelivery.com.br/appv3/marmitex.png",
"icon": "https://pedeai-common.sfo2.cdn.digitaloceanspaces.com/cuisine/resized/694236.png"
}
],
"openCount": 1,
"closedCount": 1,
"items": [
{
"position": 1,
"merchantId": "17642",
"name": "Bella Roma",
"slug": "bella-roma1",
"logo": "https://merchant-assets.pede.ai/bella-roma/logo.png",
"banner": "https://merchant-assets.pede.ai/bella-roma/banner.png",
"isOpen": true,
"deliveryTimeText": "20-40",
"deliveryTimeMinMinutes": 20,
"deliveryTimeMaxMinutes": 40,
"deliveryTimeAverageMinutes": 30,
"deliveryFee": 7,
"minimumOrderValue": 0,
"freeDeliveryMinimum": 120,
"rating": 4.5,
"ratingDisplay": "4.5",
"acceptsCoupon": true,
"acceptsOnlinePayment": true,
"acceptsInPersonPayment": true,
"acceptsPix": true,
"acceptsNuPay": true,
"acceptsPicPay": true,
"isNew": false,
"isBrief": false,
"isExclusive": false,
"deliveryDisabled": false,
"offerDiscount": 0,
"fullCompanyOffer": false,
"storeDisplayType": 0,
"storeTypes": [
{
"id": 1,
"name": "Restaurantes",
"icon": "https://pedeai-common.sfo2.cdn.digitaloceanspaces.com/restaurantes2.png",
"order": 1,
"status": "S"
}
],
"categories": [
{
"id": 4,
"name": "Almoco",
"image": "https://cdn.aiboodelivery.com.br/appv3/marmitex.png",
"icon": "https://pedeai-common.sfo2.cdn.digitaloceanspaces.com/cuisine/resized/694236.png"
}
]
}
]
}
} | Path | Type | Description | Example |
|---|---|---|---|
| data.areaId | string | areaId effectively resolved to pede.ai's internal query. | 19590 |
| data.categories[].id | number | Field data.categories[].id returned in the response payload. | 4 |
| data.categories[].name | string | Field data.categories[].name returned in the response payload. | Almoco |
| data.city | string | Resolved city for the query. | Amargosa |
| data.cityId | string | cityId effectively resolved to pede.ai internal query. | 508 |
| data.closedCount | number | Number of closed merchants in the result. | 1 |
| data.extractedAt | string (iso datetime) | data.extractedAt field returned in the response payload. | 2026-04-17T18:00:00.000Z |
| data.items[].acceptsCoupon | boolean | Field data.items[].acceptsCoupon returned in the response payload. | true |
| data.items[].acceptsInPersonPayment | boolean | data.items[].acceptsInPersonPayment field returned in the response payload. | true |
| data.items[].acceptsNuPay | boolean | Field data.items[].acceptsNuPay returned in the response payload. | true |
| data.items[].acceptsOnlinePayment | boolean | Field data.items[].acceptsOnlinePayment returned in the response payload. | true |
| data.items[].acceptsPicPay | boolean | Field data.items[].acceptsPicPay returned in the response payload. | true |
| data.items[].acceptsPix | boolean | Field data.items[].acceptsPix returned in the response payload. | true |
| data.items[].banner | string | Field data.items[].banner returned in the response payload. | https://merchant-assets.pede.ai/bella-roma/banner.png |
| data.items[].categories[].id | number | Field data.items[].categories[].id returned in the response payload. | 4 |
| data.items[].categories[].name | string | Field data.items[].categories[].name returned in the response payload. | Almoco |
| data.items[].deliveryDisabled | boolean | Field data.items[].deliveryDisabled returned in the response payload. | false |
| data.items[].deliveryFee | number | Field data.items[].deliveryFee returned in the response payload. | 7 |
| data.items[].deliveryTimeAverageMinutes | number | Field data.items[].deliveryTimeAverageMinutes returned in the response payload. | 30 |
| data.items[].deliveryTimeMaxMinutes | number | Field data.items[].deliveryTimeMaxMinutes returned in the response payload. | 40 |
| data.items[].deliveryTimeMinMinutes | number | Field data.items[].deliveryTimeMinMinutes returned in the response payload. | 20 |
| data.items[].deliveryTimeText | string | Field data.items[].deliveryTimeText returned in the response payload. | 20-40 |
| data.items[].freeDeliveryMinimum | number | Field data.items[].freeDeliveryMinimum returned in the response payload. | 120 |
| data.items[].fullCompanyOffer | boolean | data.items[].fullCompanyOffer field returned in the response payload. | false |
| data.items[].isBrief | boolean | Field data.items[].isBrief returned in the response payload. | false |
| data.items[].isExclusive | boolean | data.items[].isExclusive field returned in the response payload. | false |
| data.items[].isNew | boolean | Field data.items[].isNew returned in the response payload. | false |
| data.items[].isOpen | boolean | Field data.items[].isOpen returned in the response payload. | true |
| data.items[].logo | string | Field data.items[].logo returned in the response payload. | https://merchant-assets.pede.ai/bella-roma/logo.png |
| data.items[].merchantId | string | Merchant identifier that must be reused in pede.ai PDP. | 17642 |
| data.items[].minimumOrderValue | number | Field data.items[].minimumOrderValue returned in the response payload. | 0 |
| data.items[].name | string | data.items[].name field returned in the response payload. | Bella Roma |
| data.items[].offerDiscount | number | Field data.items[].offerDiscount returned in the response payload. | 0 |
| data.items[].position | number | Position of the merchant in the PLP unified list. | 1 |
| data.items[].rating | number | Field data.items[].rating returned in the response payload. | 4.5 |
| data.items[].ratingDisplay | string | data.items[].ratingDisplay field returned in the response payload. | 4.5 |
| data.items[].slug | string | Field data.items[].slug returned in the response payload. | bella-roma1 |
| data.items[].storeDisplayType | number | Field data.items[].storeDisplayType returned in the response payload. | 0 |
| data.items[].storeTypes[].id | number | Field data.items[].storeTypes[].id returned in the response payload. | 1 |
| data.items[].storeTypes[].name | string | Field data.items[].storeTypes[].name returned in the response payload. | Restaurantes |
| data.locationResolution.areaId | string | areaId effectively resolved to pede.ai's internal query. | 19590 |
| data.locationResolution.city | string | City resolved from CEP. | Amargosa |
| data.locationResolution.cityId | string | cityId effectively resolved to pede.ai internal query. | 508 |
| data.locationResolution.formattedZipCode | string | CEP formatted with hyphen used in synthetic public URL. | 45300-000 |
| data.locationResolution.geocoderProvider | string | Provider used in geocoding CEP. | brasilapi |
| data.locationResolution.latitude | number | Latitude associated with CEP when available. | -13.0303 |
| data.locationResolution.longitude | number | Longitude associated with CEP when available. | -39.6031 |
| data.locationResolution.matchStrategy | string | Textual strategy used to select the best area of pede.ai. | exact |
| data.locationResolution.neighborhood | string | Textual neighborhood/locality returned by the geocoder. | Alto da Bela Vista |
| data.locationResolution.rankedCandidates[].active | boolean | Field data.locationResolution.rankedCandidates[].active returned in the response payload. | true |
| data.locationResolution.rankedCandidates[].areaId | string | data.locationResolution.rankedCandidates[].areaId field returned in the response payload. | 19590 |
| data.locationResolution.rankedCandidates[].city | string | Field data.locationResolution.rankedCandidates[].city returned in the response payload. | Amargosa |
| data.locationResolution.rankedCandidates[].cityId | string | Field data.locationResolution.rankedCandidates[].cityId returned in the response payload. | 508 |
| data.locationResolution.rankedCandidates[].externalProvider | string | Field data.locationResolution.rankedCandidates[].externalProvider returned in the response payload. | Leve.ai |
| data.locationResolution.rankedCandidates[].matchedLabel | string | Field data.locationResolution.rankedCandidates[].matchedLabel returned in the response payload. | Alto da Bela Vista |
| data.locationResolution.rankedCandidates[].matchStrategy | string | Field data.locationResolution.rankedCandidates[].matchStrategy returned in the response payload. | exact |
| data.locationResolution.rankedCandidates[].minimumRate | number | Field data.locationResolution.rankedCandidates[].minimumRate returned in the response payload. | 5 |
| data.locationResolution.rankedCandidates[].neighborhood | string | Field data.locationResolution.rankedCandidates[].neighborhood returned in the response payload. | Alto da Bela Vista |
| data.locationResolution.rankedCandidates[].score | number | Field data.locationResolution.rankedCandidates[].score returned in the response payload. | 400 |
| data.locationResolution.rankedCandidates[].state | string | Field data.locationResolution.rankedCandidates[].state returned in the response payload. | BA |
| data.locationResolution.rankedCandidates[].typeOperation | string | data.locationResolution.rankedCandidates[].typeOperation field returned in the response payload. | OPL |
| data.locationResolution.state | string | UF resolved from CEP. | BA |
| data.locationResolution.stateName | string | State name resolved from CEP. | Bahia |
| data.locationResolution.zipCode | string | CEP normalized to 8 digits used in geographic resolution. | 45300000 |
| data.neighborhood | string | Neighborhood/area selected for the query. | Alto da Bela Vista |
| data.openCount | number | Number of open merchants in the result. | 1 |
| data.requestUrl | string | Same value as `data.url`; never exposes the queried internal endpoint. | https://pede.ai/lista?cep=45300-000 |
| data.source | string | Field data.source returned in the response payload. | pede.ai |
| data.state | string | UF resolved for query. | BA |
| data.type | string | Field data.type returned in the response payload. | plp |
| data.url | string | URL publishes synthetic code used as the request's canonical identifier. | https://pede.ai/lista?cep=45300-000 |
| executionId | string (uuid) | Field executionId returned in the response payload. | 77777777-2222-4222-8222-777777777777 |
| requestId | string (uuid) | Field requestId returned in the response payload. | 77777777-1111-4111-8111-777777777777 |
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. |