# Foodpanda CLI

> Order food from foodpanda.ph using the foodpanda-cli command-line tool. Use when the user wants to search restaurants, browse menus, build a cart, or place a food delivery order in the Philippines. Requires Node.js and shell access.

- Skill: `dvcrn/foodpanda-cli` (Agent Skill)
- Install (CLI): `npx skillmds@latest add dvcrn/foodpanda-cli`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dvcrn/foodpanda-cli/raw
- Safety review: pending (external: skill-scanner FAIL, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: dvcrn (https://skillmd.com/u/dvcrn)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/dvcrn/foodpanda-cli

---


# foodpanda-cli

A command-line tool for ordering food delivery from foodpanda.ph. All commands output structured JSON to stdout. Designed for the Philippines market only.

## Prerequisites & Installation

Ensure Node.js 18+ and npm are available, then install globally:

```bash
npm install -g foodpanda-cli
```

Verify the installation:

```bash
foodpanda-cli --version
```

## Initial Setup (One-Time)

Before using any other commands, complete these two setup steps:

### 1. Set delivery location

Provide the user's delivery coordinates (latitude and longitude in the Philippines):

```bash
foodpanda-cli location <latitude> <longitude>
```

Example:

```bash
foodpanda-cli location 14.5995 120.9842
# => {"success": true, "latitude": 14.5995, "longitude": 120.9842}
```

### 2. Log in

Opens a browser window for the user to log in to their foodpanda account. The session token is captured automatically. This step requires user interaction.

```bash
foodpanda-cli login
```

An optional `--timeout <seconds>` flag controls how long to wait (default: 120s).

## Command Reference

### Search & Discovery

**Search restaurants:**

```bash
foodpanda-cli search <query> [--cuisine <type>] [--limit <n>]
```

Returns an array of matching restaurants with `id` (vendor code), `name`, `cuisine`, `rating`, `delivery_fee`, `delivery_time`, `is_open`, and optionally `chain_code`.

**List chain outlets:**

```bash
foodpanda-cli outlets <chain_code>
```

Lists all branches of a restaurant chain. Use the `chain_code` from search results.

**Get restaurant details:**

```bash
foodpanda-cli restaurant <vendor_code>
```

Returns full details: address, description, opening hours, delivery availability.

### Menu & Items

**Browse menu:**

```bash
foodpanda-cli menu <vendor_code>
```

Returns the menu organized by category. Each item includes `code`, `name`, `price`, and `description`. Use item codes for adding to cart.

**Get item details (toppings & variations):**

```bash
foodpanda-cli item <vendor_code> <product_code>
```

Returns full item details including `topping_groups` (with options, prices, and min/max quantities) and `variation` info. Always check this before adding items with customizations.

### Cart Management

**Add items to cart:**

```bash
foodpanda-cli add <vendor_code> --items '<json_array>'
```

The `--items` flag takes a JSON array. Each element:

```json
[
  {
    "item_id": "product-code",
    "quantity": 1,
    "topping_ids": ["101", "205"],
    "special_instructions": "No onions"
  }
]
```

Only `item_id` and `quantity` are required. `topping_ids` and `special_instructions` are optional.

**View cart:**

```bash
foodpanda-cli cart
```

Returns the current cart with all items, quantities, prices, fees, and total. Returns `{"message": "Cart is empty."}` if empty.

**Remove item from cart:**

```bash
foodpanda-cli remove <cart_item_id>
```

Remove an item by its `cart_item_id` (e.g., `cart-1`, `cart-2`). These IDs are shown in cart output.

### Ordering

**Preview order:**

```bash
foodpanda-cli preview
```

Returns the full order preview: cart contents, selected delivery address, available payment methods, and totals. Always run this before placing an order.

**Place order:**

```bash
foodpanda-cli order --payment <method> [--instructions <text>]
```

Places the order. Returns `order_id`, `status`, `estimated_delivery_time`, and `total`.

Currently only `payment_on_delivery` (Cash on Delivery) is supported as the payment method.

## Recommended Workflow

Follow these steps when the user wants to order food:

1. **Check setup** — Ensure location and login are configured. If the user hasn't set these up, run `location` and `login` first.
2. **Search** — Ask the user what they want to eat, then run `search` to find restaurants.
3. **Present options** — Show the user matching restaurants with names, cuisines, ratings, and delivery times.
4. **Browse menu** — Once the user picks a restaurant, run `menu` to see available items.
5. **Check item details** — If the user wants customizations, run `item` to see available toppings and variations.
6. **Build cart** — Use `add` to add items. Show the user the cart after each addition.
7. **Preview** — Run `preview` to show the final order summary with delivery address and total.
8. **Confirm and order** — ONLY after the user explicitly confirms, run `order --payment payment_on_delivery`.

## Important Rules

- **ALWAYS confirm with the user before running the `order` command.** This places a real order with real money. Never run it without explicit user approval.
- **Payment:** Only `payment_on_delivery` (Cash on Delivery) works. Do not attempt other payment methods.
- **Cart switching:** Adding items from a different restaurant clears the existing cart. Warn the user before doing this.
- **Errors:** All errors are returned as `{"error": "message"}`. If you get an authentication error, prompt the user to run `login` again.
- **Location required:** All commands except `location` and `login` require a delivery location to be set first.
- **Philippines only:** This tool only works with foodpanda.ph for delivery addresses in the Philippines.

## Common Patterns

### Filtering by cuisine

```bash
foodpanda-cli search "pizza" --cuisine "Italian" --limit 5
```

### Ordering with toppings

1. Get item details to find topping IDs:
   ```bash
   foodpanda-cli item p7nl ct-36-pd-1673
   ```
2. Add with selected toppings:
   ```bash
   foodpanda-cli add p7nl --items '[{"item_id":"ct-36-pd-1673","quantity":1,"topping_ids":["101","205"]}]'
   ```

### Finding a specific branch of a chain

1. Search returns `chain_code` for chain restaurants
2. List all branches:
   ```bash
   foodpanda-cli outlets cg0ep
   ```
3. Pick the closest/preferred branch and use its vendor code for menu and ordering

