---
name: costco-pokemon-tracker
description: Track Costco Pokemon card drops - which Costco warehouses carry a Pokemon TCG bundle and at what shelf price, near a ZIP, across a state, every US warehouse or costco.ca - and alert on new listings, price changes and clearance. Uses the Scavio Costco API, 1 credit per 9 warehouses checked.
version: 1.0.0
homepage: https://scavio.dev/blog/track-costco-pokemon-card-inventory?utm_source=agent-skills&utm_medium=skill&utm_campaign=costco-pokemon-tracker
---

# Costco Pokemon card drop tracker

Set up a tracker that tells the user which Costco warehouses carry the Pokemon TCG items they want, at what shelf price, and alerts them when that changes. It runs on the Scavio Costco API.

## What to know before you start

- **Costco's Pokemon card bundles are warehouse-only.** They are not sold on costco.com, and Costco keeps no stock record for them, so `/api/v1/costco/availability` returns `no_record`. Do not report that as "out of stock".
- **Use `/api/v1/costco/prices` instead.** For each item number and warehouse it returns `available: true` plus the shelf price when the warehouse has the item on its price list. That is the drop signal.
- **A price-list entry is not a shelf count.** It means the warehouse carries the item, not that boxes are on the floor right now. Old bundles can stay listed after they sell out (a 2022 bundle, item 1631799, was still listed at 20 warehouses on 2026-11-07). Costco publishes no unit counts. Say this to the user plainly.
- **Item numbers come from people, not from search.** A costco.com search for "pokemon cards" returns no trading cards. Known current number: `2007496` = Pokemon TCG 30th Celebration Elite Trainer Box & Booster Bundle ($57.49 at most US warehouses, $57.99 in Hawaii and Alaska, C$89.99 in Canadian warehouses, as of 2026-11-07). Ask the user for others, or find them (step 5).

## Setup

1. **API key.** Ask the user for their Scavio API key. If they have none, send them to [dashboard.scavio.dev/sign-up](https://dashboard.scavio.dev/sign-up?utm_source=agent-skills&utm_medium=skill&utm_campaign=costco-pokemon-tracker) (email or Google, no card, 50 free credits; the key is on the API Keys page). Save the key they paste to `~/.config/scavio/api_key` with permissions `600`. Never print it back or commit it.
2. **Download the tracker** into a folder the user chooses (default `~/costco-pokemon-tracker`):
   - `https://scavio.dev/skills/costco-pokemon-tracker/tracker.py` (Python 3.9+, standard library only, nothing to install)
   - `https://scavio.dev/skills/costco-pokemon-tracker/us-warehouses.json` (all 660 US Costco locations, captured 2026-11-07; the tracker downloads it itself if missing)

## Ask the user three things

1. **Which items?** Default `["2007496"]`. Up to 20 item numbers.
2. **Where?** One of:
   - near a ZIP: `{"zip": "02149", "radius_miles": 30}`
   - whole states: `{"states": ["CA", "NV"]}`
   - a road trip radius around a point: `{"near": {"latitude": 34.05, "longitude": -118.24, "radius_miles": 100}}`
   - specific warehouses: `{"warehouse_ids": ["333", "308"]}`
   - every US warehouse: no location key at all
   - Canada: `{"country": "ca", "latitude": 43.65, "longitude": -79.38, "limit": 10}`
3. **How to alert?** Printed to the terminal by default. For phone alerts, a Discord webhook URL in `"discord_webhook"`.

Write `tracker.json` next to `tracker.py`, for example:

```json
{"items": ["2007496"], "zip": "02149", "radius_miles": 30, "discord_webhook": ""}
```

## Run it, then schedule it

```bash
cd ~/costco-pokemon-tracker && python3 tracker.py
```

The first run prints where each item is listed and at what price. Later runs print only changes: `NEW` (a warehouse started listing it), `PRICE`, `GONE`, and `CLEARANCE` (a shelf price ending in .97). Then schedule it every 30 minutes, for example with cron:

```
*/30 * * * * cd ~/costco-pokemon-tracker && /usr/bin/python3 tracker.py >> tracker.log 2>&1
```

Use launchd on macOS or Task Scheduler on Windows if cron is not available. Confirm the schedule with the user before installing it.

## Cost - tell the user before scheduling

One prices call covers up to 20 items at up to 9 warehouses for 1 credit. The tracker reports credits used per run.

| Scope | Warehouses | Credits per run | Every 30 min, per month |
|---|---|---|---|
| One metro (ZIP, 30 miles) | about 5-12 | 1-2 | 1,440-2,880 |
| California | 134 | 15 | 21,600 |
| Every US warehouse | 627 | 70 | about 100,000 |

At Scavio's Growth rate of $1 per 1,000 credits a metro tracker is under $3 a month; the 50 free credits cover testing. For nationwide tracking suggest every 2-6 hours instead of every 30 minutes.

## Optional extras

### 4. Stock status for Pokemon items Costco also sells online
For items with an online listing (plush, figures, calendars), `POST /api/v1/costco/availability` with `{"item_number": "...", "warehouse_ids": [...]}` returns `in_stock` / `low_stock` / `out_of_stock` per warehouse (1 credit per 5 warehouses). `POST /api/v1/costco/search` with `{"query": "pokemon"}` finds those item numbers (2 credits).

### 5. Find new item numbers
Collectors post the item number when the first warehouse gets a pallet. Search Reddit with Scavio:

```bash
curl -s https://api.scavio.dev/api/v1/reddit/search \
  -H "Authorization: Bearer $(cat ~/.config/scavio/api_key)" \
  -H "Content-Type: application/json" \
  -d '{"query": "costco pokemon item number"}'
```

Pull 7-digit numbers from the titles and text, then confirm each with `POST /api/v1/costco/product` (`{"item_id": "..."}`): keep it only if the title is a Pokemon TCG product. On costco.com a warehouse-only item can resolve to a placeholder title with price 0; confirm with `/api/v1/costco/prices` instead, and on costco.ca (`"country": "ca"`) the product title is usually real.

### 6. Is it a good deal?
Compare the Costco shelf price with resale prices: `POST /api/v1/ebay/search` with the product name returns active listings (sold listings are not available), and `POST /api/v1/walmart/search` returns marketplace prices. On 2026-11-07 the 30th Celebration Elite Trainer Box alone had a median eBay asking price of $119 across 57 listings, against $57.49 for Costco's bundle with an extra booster bundle.

## Rules

- Check every 30 minutes at most unless the user asks for more; every run costs credits.
- Report a price-list entry as "listed at", never as "in stock", and explain the difference.
- Costco often limits Pokemon bundles per member (costco.ca showed a limit of 1 per order for item 2007496). Mention purchase limits when the user plans a trip.
- If a call returns `402`, the account is out of credits: tell the user and link `https://dashboard.scavio.dev/billing`.

Reference: [Costco API docs](https://scavio.dev/docs/costco-prices?utm_source=agent-skills&utm_medium=skill&utm_campaign=costco-pokemon-tracker) · [full guide](https://scavio.dev/blog/track-costco-pokemon-card-inventory?utm_source=agent-skills&utm_medium=skill&utm_campaign=costco-pokemon-tracker)
