Shopee product pages, search results and shop catalogs as JSON, on request.
Free trial credits. Catalog and estimates work immediately.
Need monthly sales and market share instead? Shopee market data →
{
"region": "id",
"shop_id": "34907167",
"item_id": "40869177342"
}{
"task_id": 37039736,
"status": "completed",
"result": {
"page_url": "https://shopee.co.id/product/34907167/40869177342",
"collected_at": 1790312459,
"detail": {
"item": {
"item_id": 40869177342,
"shop_id": 34907167,
"title": "Apple iPhone 15 - Garansi Resmi",
"brand": "Apple",
"currency": "IDR",
"tier_variations": [
{
"name": "Warna",
…Get a key. Sign in and create an API key in the dashboard. New accounts get free trial credits.
Submit. POST the product to /v1/shopee/get_pc/submit. You get a task ID back.
Retrieve. Poll /v1/shopee/get_pc/retrieve/{task_id} until the status is complete, then read the result.
# shop_id and item_id are in the product URL: ...-i.{shop_id}.{item_id}
curl -X POST https://api.magpieiq.com/scraping/v1/shopee/get_pc/submit \
-H "Authorization: Bearer $MAGPIE_API_KEY" -H "Content-Type: application/json" \
-d '{"region": "id", "shop_id": "34907167", "item_id": "40869177342"}'
# -> {"task_id": 37039736, "status": "pending", ...}
curl https://api.magpieiq.com/scraping/v1/shopee/get_pc/retrieve/37039736 \
-H "Authorization: Bearer $MAGPIE_API_KEY"import os, time, requests
BASE = "https://api.magpieiq.com/scraping"
H = {"Authorization": f"Bearer {os.environ['MAGPIE_API_KEY']}"}
task = requests.post(f"{BASE}/v1/shopee/get_pc/submit", headers=H,
json={"region": "id", "shop_id": "34907167", "item_id": "40869177342"}).json()
while True:
r = requests.get(f"{BASE}/v1/shopee/get_pc/retrieve/{task['task_id']}", headers=H).json()
if r["status"] != "pending":
break
time.sleep(10)
if r["status"] != "completed":
raise SystemExit(f"task {task['task_id']} ended with status {r['status']}")
item = r["result"]["detail"]["item"]
price = r["result"]["detail"]["product_price"]["price"]["range_min"] / 100_000
print(item["title"], price){
"task_id": 37039736,
"status": "completed",
"result": {
"page_url": "https://shopee.co.id/product/34907167/40869177342",
"collected_at": 1790312459,
"detail": {
"item": {
"item_id": 40869177342,
"shop_id": 34907167,
"title": "Apple iPhone 15 - Garansi Resmi",
"brand": "Apple",
"currency": "IDR",
"tier_variations": [
{
"name": "Warna",
"options": ["Yellow", "Green", "Black", "Pink", "Blue"]
},
{
"name": "Penyimpanan",
"options": ["128GB", "256GB"]
}
],
"models": [
{
"model_id": 375252464276,
"name": "Green,256GB",
"price": 1407900000000
},
{
"model_id": 238282002834,
"name": "Blue,128GB",
"price": 1360100000000
}
]
},
"product_price": {
"price": {
"range_min": 1151700000000,
"range_max": 1432500000000
}
},
"product_review": {
"rating_star": 4.92,
"total_rating_count": 25,
"sold_count_display": "43",
"liked_count": 190
},
"product_attributes": {
"categories": ["Handphone & Aksesoris", "Handphone", "Apple"]
},
"shop_detailed": {
"shopid": 34907167,
"name": "Doran Wearable Manado",
"is_official_shop": true,
"is_shopee_verified": false,
"rating_star": 4.853132,
"follower_count": 7089,
"item_count": 1289,
"response_rate": 100
}
}
}
}/v1/shopee/get_pcOne product's current listing: price, every variant, rating, sold count and seller details.
regionshop_iditem_id/v1/shopee/get_pc_bulkThe same data for many products, downloaded as CSV or JSONL. Can run on a schedule with a webhook when ready.
CSV of regionshop_iditem_id/v1/shopee/pdp-bundlingOne bundle per successful product containing all matched API captures as CSV or JSONL. Supports schedules, completion webhooks, and GCS/S3 delivery.
CSV of regionshop_iditem_id/v1/shopee/search-itemsEvery product on a search or category results page. Sort and filters come from the URL: sortBy=sales, sortBy=ctime.
Up to 50 URLsmax_pages/v1/shopee/app/search-itemsSubmit at /submit, poll /retrieve/{job_id}, then download raw JSON from /jobs/{job_id}/pages/{item_id}/data. Charged on approval at the current per-page rate; unsuccessful pages and pages beyond a verified end-of-results boundary are refunded.
keywordstart_pagemax_pages (1–100)sort_byorderfilters; up to 50 searches/v1/shopee/merchant-itemsThe products in one shop, page by page, with the same URL sort options.
Up to 50 shop URLsmax_pages/v1/shopee/variant_sold_v1The exact cumulative sold count per variant. No monthly field: compare two snapshots to get a period.
Up to 50,000 itemsone country per request| Field | Type | Meaning |
|---|---|---|
result.page_url | string | The product's Shopee URL. |
result.collected_at | unix seconds | When this result was collected. |
result.detail.item.item_id / shop_id | integer | Shopee's product and shop identifiers. |
result.detail.item.title | string | Listing title as shown on Shopee. |
result.detail.item.brand | string | Brand as set on the listing. |
result.detail.item.currency | string | Currency of every price field (IDR for Indonesia). |
result.detail.item.tier_variations | array | Variant dimensions and their options (e.g. colour, storage). |
result.detail.item.models[] | array | One entry per variant combination, with its own model_id and price. |
result.detail.product_price.price.range_min / range_max | integer | Lowest and highest variant price. Divide by 100,000 for the currency amount. |
result.detail.product_review.rating_star | number | Average rating, 0–5. |
result.detail.product_review.total_rating_count | integer | Number of ratings. |
result.detail.product_review.sold_count_display | string | Sold count as Shopee displays it. Use Variant sold for exact counts per variant. |
result.detail.product_attributes.categories | array | Shopee category path. |
result.detail.shop_detailed.name | string | Shop name. |
result.detail.shop_detailed.is_official_shop | boolean | Whether the shop is an official store. |
result.detail.shop_detailed.rating_star / follower_count | number | Shop rating and followers. |
8,000credits
≈ $10
120,000credits
≈ $150
120credits
≈ $0.15
Dollar figures use the Tier 1 credit rate. Pay-as-you-go top-ups cost more per credit and larger packs cost less; the rate card has every pack.
Search and Shop catalog jobs reserve credits for the pages you request and are billed only for pages actually returned.
Give your assistant a list of your products and their Shopee URLs, and it checks whether anyone on Shopee is selling below your price.
I will give you a list of products, each with our offer price and the Shopee URL of the matching listing. For each row, extract shop_id and item_id from the URL, which ends in -i.{shop_id}.{item_id}. POST to /v1/shopee/get_pc/submit with {"region": "id", "item_id": "...", "shop_id": "..."} to get a task_id, then poll GET /v1/shopee/get_pc/retrieve/{task_id} until it returns a result. Read the current price and divide it by 100000.
Give me a table of every product where the Shopee price is at or below ours, showing our price, the Shopee price and the gap. Also report is_lowest_price_at_shopee for each row — read it from each entry in item.models, because the item-level field comes back null.
Only use get_pc: it runs without manual approval.The copied prompt also tells your assistant how to get you a key if you don’t have one yet, and to ask before spending credits.
No. You need a Magpie API key. Sign-up is self-serve and includes free trial credits.
Product page requests run at any time without approval; you submit, then poll until the result is ready. Listing and variant jobs are reviewed first and processed 8am–6pm GMT+8.
Shopee returns prices as integers in its own raw format. Dividing by 100,000 gives the amount in the listing's currency.
Yes, with Variant sold. It returns the exact cumulative sold count per variant. Schedule it and subtract two snapshots to get sales for a period.
In prepaid credits from one wallet shared with the Data API. Product pages are billed per product, listing pages per page actually returned. The rate card shows every current price.
Yes. The Data API serves monthly GMV, units and market share for Shopee by brand, merchant and SKU, already cleaned and categorised.
Free trial credits. Catalog and estimates work immediately.