---
title: "Get the Papa John's Peru priced menu (PEN)"
method: GET
path: "/papajohns/peru/menu"
tags: ["Papa John's"]
---

# Get the Papa John's Peru priced menu (PEN)

`GET /papajohns/peru/menu`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/papajohns/peru/menu`
- Auth: API key in header `x-api-key`

Returns Papa John's **Peru** menu with prices in Peruvian soles, covering the full catalog with categories, images and per-product pricing. Peru runs its own ordering platform, independent of the six markets behind GET /papajohns/intl/menu and of Colombia and El Salvador, so it has its own endpoint. Prices are Peruvian soles and are not comparable with any other market.

## Query parameters

- `category` string

## Headers

- `x-api-key` string, required

## Response `200`

OK

- PapajohnsLatamMenuResponseDoc
  - `code` integer: Code is the HTTP status code or a custom code used to indicate the result of the request @example 200
  - `data` PapajohnsLatamMenuResponse
    - `categories` PapajohnsLatamCategory[]
      - `id` string
      - `name` string
      - `product_count` integer
      - `products` PapajohnsLatamProduct[]
        - `category` string
        - `currency` string
        - `description` string
        - `id` string
        - `image_url` string
        - `name` string
        - `price_from` number: PriceFrom is the cheapest priced variant, so a caller can rank products without walking every variant.
        - `url` string
        - `variants` PapajohnsLatamVariant[]
          - `available` boolean
          - `crust` string
          - `currency` string
          - `fulfillment` string: Fulfillment is the order channel this price applies to, where the market prices delivery and pickup differently. Colombia does: the same item is commonly ~15% dearer for "Domicilio" than "Recoger en Tienda", so two variants that look otherwise identical are not duplicates.
          - `list_price` number: ListPrice is the pre-discount price where the market publishes one and it actually differs from price.
          - `name` string: Name is the market's own label for the variant where it gives one.
          - `price` number
          - `sauce` string: Sauce is populated only by Colombia, whose SKUs vary by sauce too.
          - `size` string: Size and Crust are populated where the market distinguishes them.
          - `sku` string
    - `category` string
    - `currency` string
    - `fetched_at` string
    - `market` string
    - `partial` boolean: Partial is true when a paginated upstream failed part-way and the response carries only the pages that were retrieved. A menu that is quietly short is indistinguishable from one that genuinely has fewer items, so it is flagged rather than left to look complete.
    - `product_count` integer: ProductCount is how many products the response carries. Where the upstream paginates, every page is followed before returning.
    - `source_url` string
  - `msg` unknown

## Other responses

- `400`: Bad Request
- `404`: Not Found
- `429`: Too Many Requests
- `503`: Service Unavailable

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/028417aa35bb?raw)
