Skip to content

// docs

Pede.ai: Get restaurant and menu

Extracts merchant + catalog from pede.ai by merchantId + CEP. The backend resolves the area automatically via /v1/extract/lookups/pede.ai/resolve-zip-code and returns only synthetic pede.ai public URLs.

pede.ai:pdp · 5 credits per request

Standard credit cost. Your account pricing is shown in the sandbox.

Try this operation in the sandbox

HTTP request

cURL
curl -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": "pdp",
  "merchantId": "35275",
  "zipCode": "45300-000"
}'

Keep your API key on your server. See the quickstart for authentication and response handling.

MCP request

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

pede_ai_pdp · tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "pede_ai_pdp",
    "arguments": {
      "merchantId": "35275",
      "zipCode": "45300-000",
      "executionId": "exec_example_123"
    }
  }
}

Supported inputs

Conditional fields depend on the alternatives and constraints in the rule column. Fields marked unsupported are omitted.

FieldTypeRequirementRuleDefaultExample
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 PDP. Accepts CEP with or without hyphen; API normalizes the value and resolves the area automatically. - 45300-000
merchantId
Internal merchant identifier used in pede.ai PDP. Normally it comes from the result of PLP and must be combined with zipCode.
string Required Mandatory in pede.ai PDP. Use the merchantId returned by PLP and combine it with zipCode. - 35275
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 pdp. - pdp

Request examples

Merchant by merchantId + CEP

Recommended flow: call PLP first to discover merchantId, and then send merchantId + zipCode to PDP.

Merchant by merchantId + CEP
{
  "target": "pede.ai",
  "type": "pdp",
  "merchantId": "35275",
  "zipCode": "45300-000"
}

Response schema

Leaf paths and expected types. Field names and enum values are part of the API contract.

responseSchema
{
  "requestId": "string (uuid)",
  "executionId": "string (uuid)",
  "data.source": "string",
  "data.type": "string",
  "data.url": "string",
  "data.requestUrl": "string",
  "data.extractedAt": "string (iso datetime)",
  "data.merchantId": "string",
  "data.areaId": "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.data.merchantId": "string",
  "data.data.name": "string",
  "data.data.description": "string",
  "data.data.slug": "string",
  "data.data.logo": "string",
  "data.data.cover": "string",
  "data.data.available": "boolean",
  "data.data.acceptsScheduling": "boolean",
  "data.data.rating": "number",
  "data.data.ratingDisplay": "string",
  "data.data.deliveryTimeText": "string",
  "data.data.deliveryTimeMinutes": "number",
  "data.data.acceptsCoupon": "boolean",
  "data.data.acceptsOnlinePayment": "boolean",
  "data.data.acceptsInPersonPayment": "boolean",
  "data.data.acceptsPix": "boolean",
  "data.data.acceptsNuPay": "boolean",
  "data.data.acceptsPicPay": "boolean",
  "data.data.categories[].id": "number",
  "data.data.categories[].name": "string",
  "data.data.storeTypes[].id": "number",
  "data.data.storeTypes[].name": "string",
  "data.data.address.raw": "string",
  "data.data.address.street": "string",
  "data.data.address.number": "string",
  "data.data.address.neighborhood": "string",
  "data.data.address.city": "string",
  "data.data.address.state": "string",
  "data.data.address.zipCode": "string",
  "data.data.address.latitude": "number",
  "data.data.address.longitude": "number",
  "data.data.deliveryArea.areaId": "string",
  "data.data.deliveryArea.cityId": "string",
  "data.data.deliveryArea.city": "string",
  "data.data.deliveryArea.state": "string",
  "data.data.deliveryArea.neighborhood": "string",
  "data.data.deliveryArea.deliveryFee": "number",
  "data.data.deliveryArea.minimumOrderValue": "number",
  "data.data.deliveryArea.freeDeliveryMinimum": "number",
  "data.data.deliveryArea.acceptsFreeDelivery": "boolean",
  "data.data.deliveryArea.areaNotServed": "boolean",
  "data.data.menuSectionCount": "number",
  "data.data.menuItemCount": "number",
  "data.data.menu[].sectionId": "string",
  "data.data.menu[].name": "string",
  "data.data.menu[].items[].itemId": "string",
  "data.data.menu[].items[].merchantId": "string",
  "data.data.menu[].items[].categoryId": "string",
  "data.data.menu[].items[].name": "string",
  "data.data.menu[].items[].description": "string",
  "data.data.menu[].items[].image": "string",
  "data.data.menu[].items[].price": "number",
  "data.data.menu[].items[].originalPrice": "number",
  "data.data.menu[].items[].hasStartingPrice": "boolean",
  "data.data.menu[].items[].startingPrice": "number",
  "data.data.menu[].items[].fastOrder": "boolean",
  "data.data.menu[].items[].outOfStock": "boolean",
  "data.data.menu[].items[].hidden": "boolean",
  "data.data.menu[].items[].variations[].groupId": "string",
  "data.data.menu[].items[].variations[].name": "string",
  "data.data.menu[].items[].variations[].options[].optionId": "string",
  "data.data.menu[].items[].variations[].options[].name": "string",
  "data.data.menu[].items[].variations[].options[].price": "number",
  "data.data.menu[].items[].variations[].options[].outOfStock": "boolean"
}

Example response

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.

responseExample
{
  "requestId": "88888888-1111-4111-8111-888888888888",
  "executionId": "88888888-2222-4222-8222-888888888888",
  "data": {
    "source": "pede.ai",
    "type": "pdp",
    "url": "https://pede.ai/restaurante/35275?cep=45300-000",
    "requestUrl": "https://pede.ai/restaurante/35275?cep=45300-000",
    "extractedAt": "2026-04-17T18:15:00.000Z",
    "merchantId": "35275",
    "areaId": "19590",
    "locationResolution": {
      "zipCode": "45300000",
      "formattedZipCode": "45300-000",
      "state": "BA",
      "stateName": "Bahia",
      "city": "Amargosa",
      "neighborhood": "Centro",
      "cityId": "508",
      "areaId": "19590",
      "geocoderProvider": "brasilapi",
      "latitude": -13.0303,
      "longitude": -39.6031,
      "matchStrategy": "exact",
      "rankedCandidates": [
        {
          "areaId": "19590",
          "cityId": "508",
          "city": "Amargosa",
          "state": "BA",
          "neighborhood": "Centro",
          "minimumRate": 5,
          "typeOperation": "OPL",
          "externalProvider": "Leve.ai",
          "active": true,
          "matchStrategy": "exact",
          "matchedLabel": "Centro",
          "score": 400
        }
      ]
    },
    "data": {
      "merchantId": "35275",
      "name": "Decor Colors",
      "description": "Tintas e acabamentos",
      "slug": "decor-colors",
      "logo": "https://merchant-assets.pede.ai/decor-colors/logo.jpg",
      "cover": "https://merchant-assets.pede.ai/decor-colors/cover.jpg",
      "available": true,
      "acceptsScheduling": true,
      "rating": 4.8,
      "ratingDisplay": "4.8",
      "deliveryTimeText": "30-40",
      "deliveryTimeMinutes": 35,
      "acceptsCoupon": true,
      "acceptsOnlinePayment": true,
      "acceptsInPersonPayment": true,
      "acceptsPix": true,
      "acceptsNuPay": true,
      "acceptsPicPay": true,
      "categories": [
        {
          "id": 77,
          "name": "Tintas",
          "image": "https://merchant-assets.pede.ai/tintas.png",
          "icon": "https://merchant-assets.pede.ai/tintas-icon.png"
        }
      ],
      "storeTypes": [
        {
          "id": 9,
          "name": "Casa e construcao",
          "icon": "https://merchant-assets.pede.ai/construcao.png",
          "order": 2,
          "status": "S"
        }
      ],
      "address": {
        "raw": "Rua A, 123 - Centro, Amargosa - BA",
        "street": "Rua A",
        "number": "123",
        "neighborhood": "Centro",
        "city": "Amargosa",
        "state": "BA",
        "zipCode": "45300-000",
        "latitude": -13.0303,
        "longitude": -39.6031
      },
      "deliveryArea": {
        "areaId": "19590",
        "cityId": "508",
        "city": "Amargosa",
        "state": "BA",
        "neighborhood": "Centro",
        "deliveryFee": 7,
        "minimumOrderValue": 0,
        "freeDeliveryMinimum": 120,
        "acceptsFreeDelivery": false,
        "areaNotServed": false
      },
      "menuSectionCount": 1,
      "menuItemCount": 1,
      "menu": [
        {
          "sectionId": "251538",
          "name": "Borracha Liquida",
          "hasOffer": false,
          "offerDiscount": 0,
          "order": 999,
          "items": [
            {
              "itemId": "1823207",
              "merchantId": "35275",
              "categoryId": "251538",
              "name": "Tinta Borracha Liquida Solucao Total - Decor Colors",
              "description": "Galao 1,07 Kg - Ate 4m2",
              "image": "https://merchant-assets.pede.ai/1773946435COMP_158711-1600-auto.png",
              "price": 179.99,
              "originalPrice": 0,
              "hasStartingPrice": true,
              "startingPrice": 179.99,
              "fastOrder": false,
              "outOfStock": false,
              "hidden": false,
              "sizes": [],
              "variations": [
                {
                  "groupId": "810972",
                  "name": "Escolha a cor da sua tinta",
                  "minChoices": 1,
                  "maxChoices": 1,
                  "priceCalculation": "st",
                  "options": [
                    {
                      "optionId": "4200790",
                      "name": "Atena",
                      "price": 0,
                      "description": "Cor pronta para aplicacao",
                      "image": "https://merchant-assets.pede.ai/1773946845COMP_phpJbPPen",
                      "outOfStock": false
                    }
                  ]
                }
              ],
              "removableOptions": []
            }
          ]
        }
      ]
    }
  }
}

Complete field reference

PathTypeDescriptionExample
data.areaId string areaId actually used in the query, resolved from CEP or fixed by internal override. 19590
data.data.acceptsCoupon boolean Field data.data.acceptsCoupon returned in the response payload. true
data.data.acceptsInPersonPayment boolean Field data.data.acceptsInPersonPayment returned in the response payload. true
data.data.acceptsNuPay boolean Field data.data.acceptsNuPay returned in the response payload. true
data.data.acceptsOnlinePayment boolean Field data.data.acceptsOnlinePayment returned in the response payload. true
data.data.acceptsPicPay boolean Field data.data.acceptsPicPay returned in the response payload. true
data.data.acceptsPix boolean Field data.data.acceptsPix returned in the response payload. true
data.data.acceptsScheduling boolean Field data.data.acceptsScheduling returned in the response payload. true
data.data.address.city string Field data.data.address.city returned in the response payload. Amargosa
data.data.address.latitude number Field data.data.address.latitude returned in the response payload. -13.0303
data.data.address.longitude number Field data.data.address.longitude returned in the response payload. -39.6031
data.data.address.neighborhood string Field data.data.address.neighborhood returned in the response payload. Centro
data.data.address.number string Field data.data.address.number returned in the response payload. 123
data.data.address.raw string Field data.data.address.raw returned in the response payload. Rua A, 123 - Centro, Amargosa - BA
data.data.address.state string data.data.address.state field returned in the response payload. BA
data.data.address.street string Field data.data.address.street returned in the response payload. Rua A
data.data.address.zipCode string Field data.data.address.zipCode returned in the response payload. 45300-000
data.data.available boolean Field data.data.available returned in the response payload. true
data.data.categories[].id number Field data.data.categories[].id returned in the response payload. 77
data.data.categories[].name string Field data.data.categories[].name returned in the response payload. Tintas
data.data.cover string Field data.data.cover returned in the response payload. https://merchant-assets.pede.ai/decor-colors/cover.jpg
data.data.deliveryArea.acceptsFreeDelivery boolean data.data.deliveryArea.acceptsFreeDelivery field returned in the response payload. false
data.data.deliveryArea.areaId string Delivery area actually used in the merchant query. 19590
data.data.deliveryArea.areaNotServed boolean data.data.deliveryArea.areaNotServed field returned in the response payload. false
data.data.deliveryArea.city string Field data.data.deliveryArea.city returned in the response payload. Amargosa
data.data.deliveryArea.cityId string Field data.data.deliveryArea.cityId returned in the response payload. 508
data.data.deliveryArea.deliveryFee number Field data.data.deliveryArea.deliveryFee returned in the response payload. 7
data.data.deliveryArea.freeDeliveryMinimum number Field data.data.deliveryArea.freeDeliveryMinimum returned in the response payload. 120
data.data.deliveryArea.minimumOrderValue number Field data.data.deliveryArea.minimumOrderValue returned in the response payload. 0
data.data.deliveryArea.neighborhood string data.data.deliveryArea.neighborhood field returned in the response payload. Centro
data.data.deliveryArea.state string data.data.deliveryArea.state field returned in the response payload. BA
data.data.deliveryTimeMinutes number data.data.deliveryTimeMinutes field returned in the response payload. 35
data.data.deliveryTimeText string Field data.data.deliveryTimeText returned in the response payload. 30-40
data.data.description string Field data.data.description returned in the response payload. Tintas e acabamentos
data.data.logo string Field data.data.logo returned in the response payload. https://merchant-assets.pede.ai/decor-colors/logo.jpg
data.data.menu[].items[].categoryId string Field data.data.menu[].items[].categoryId returned in the response payload. 251538
data.data.menu[].items[].description string Field data.data.menu[].items[].description returned in the response payload. Galao 1,07 Kg - Ate 4m2
data.data.menu[].items[].fastOrder boolean Field data.data.menu[].items[].fastOrder returned in the response payload. false
data.data.menu[].items[].hasStartingPrice boolean Indicates items with price "a partir de", when the exact price depends on variations. true
data.data.menu[].items[].hidden boolean Field data.data.menu[].items[].hidden returned in the response payload. false
data.data.menu[].items[].image string Field data.data.menu[].items[].image returned in the response payload. https://merchant-assets.pede.ai/1773946435COMP_158711-1600-auto.png
data.data.menu[].items[].itemId string Field data.data.menu[].items[].itemId returned in the response payload. 1823207
data.data.menu[].items[].merchantId string Field data.data.menu[].items[].merchantId returned in the response payload. 35275
data.data.menu[].items[].name string data.data.menu[].items[].name field returned in the response payload. Tinta Borracha Liquida Solucao Total - Decor Colors
data.data.menu[].items[].originalPrice number Field data.data.menu[].items[].originalPrice returned in the response payload. 0
data.data.menu[].items[].outOfStock boolean Field data.data.menu[].items[].outOfStock returned in the response payload. false
data.data.menu[].items[].price number Normalized price of the item. When hasStartingPrice=true, in production this field may be null. 179.99
data.data.menu[].items[].startingPrice number Starting price when upstream marks the item as "a partir de". 179.99
data.data.menu[].items[].variations[].groupId string Field data.data.menu[].items[].variations[].groupId returned in the response payload. 810972
data.data.menu[].items[].variations[].name string Field data.data.menu[].items[].variations[].name returned in the response payload. Escolha a cor da sua tinta
data.data.menu[].items[].variations[].options[].name string Field data.data.menu[].items[].variations[].options[].name returned in the response payload. Atena
data.data.menu[].items[].variations[].options[].optionId string Field data.data.menu[].items[].variations[].options[].optionId returned in the response payload. 4200790
data.data.menu[].items[].variations[].options[].outOfStock boolean Field data.data.menu[].items[].variations[].options[].outOfStock returned in the response payload. false
data.data.menu[].items[].variations[].options[].price number Field data.data.menu[].items[].variations[].options[].price returned in the response payload. 0
data.data.menu[].name string Field data.data.menu[].name returned in the response payload. Borracha Liquida
data.data.menu[].sectionId string data.data.menu[].sectionId field returned in the response payload. 251538
data.data.menuItemCount number Total quantity of standardized items on the menu. 1
data.data.menuSectionCount number Number of standardized sections in the menu. 1
data.data.merchantId string Field data.data.merchantId returned in the response payload. 35275
data.data.name string Field data.data.name returned in the response payload. Decor Colors
data.data.rating number Field data.data.rating returned in the response payload. 4.8
data.data.ratingDisplay string Field data.data.ratingDisplay returned in the response payload. 4.8
data.data.slug string data.data.slug field returned in the response payload. decor-colors
data.data.storeTypes[].id number Field data.data.storeTypes[].id returned in the response payload. 9
data.data.storeTypes[].name string Field data.data.storeTypes[].name returned in the response payload. Casa e construcao
data.extractedAt string (iso datetime) data.extractedAt field returned in the response payload. 2026-04-17T18:15:00.000Z
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. Centro
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. Centro
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. Centro
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.merchantId string merchantId sent in input payload. 35275
data.requestUrl string Same value as `data.url`; never exposes the queried internal endpoint. https://pede.ai/restaurante/35275?cep=45300-000
data.source string Field data.source returned in the response payload. pede.ai
data.type string Field data.type returned in the response payload. pdp
data.url string URL publishes synthetic code used as the request's canonical identifier. https://pede.ai/restaurante/35275?cep=45300-000
executionId string (uuid) Field executionId returned in the response payload. 88888888-2222-4222-8222-888888888888
requestId string (uuid) Field requestId returned in the response payload. 88888888-1111-4111-8111-888888888888

Errors and missing data

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 statusError codeMeaning
400INVALID_PAYLOADInvalid JSON or a request that violates the documented validation rules.
401UNAUTHORIZEDMissing authorization or an invalid API key or token.
402INSUFFICIENT_CREDITSThe account has insufficient credits for this operation.
403FORBIDDENThe account does not have access, or the API is temporarily disabled.
409EXECUTION_CONFLICTThe execution identifier conflicts with an incompatible execution state.
429RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTSA rate limit or simultaneous request limit was exceeded.
5xxUPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_FUNCTION_ERRORAn upstream, worker or gateway failure. Failed requests follow the platform refund policy.

Other Pede.ai operations