Wish Scraping: Listings, Prices and Merchant Records

Wish Scraper
Solutions

How the work is delivered

We scope the slice first: which categories, search terms or merchants, which delivery country prices should be resolved for, and how often it has to refresh. Then we build the crawler, run it on your schedule and hand over CSV, JSON, XLSX or a hosted API endpoint.

Records are keyed on the 24 character product id, so repeated runs deduplicate cleanly and every change becomes a diff: a price move, a merchant swap, a stock flip, a listing gone to 404. Wish serves its pages as a JavaScript shell, and the shape of the embedded state varies between requests, so we run at a measured request rate, validate response shape on every run and re-fetch failed slices instead of pushing harder. When the schema shifts, repairing the parser is our job, not yours.

What a Wish scraper extracts

The product page carries almost nothing. Fetched with a plain HTTP client it returns about five kilobytes, with no title element and a state blob holding image URLs, dimensions, a perceptual hash and is_full_product set to false. Name, price and merchant are absent. The full record lives in the JSON feed responses the app reads, and that is what a Wish scraper works from.

  • Identity: product id, canonical slug, product_url in short /c/ form, external_url in full /product/ form, meta_title and meta_description.
  • Pricing: an unrounded value, a rendered display string such as $16.58, a localized_value block with currency_code, symbol and precision, and a crossed-out reference price.
  • Merchant: merchant_id, store title, a subtitle in the form 91% Positive Feedback (926 ratings), business_country_code, a numeric wss_level and an is_active flag.
  • Rating: rating, rating_count, rating_spread and a rating_class string such as star star-5-0.
  • Availability: urgency_text, repeated as rendered text in tile_urgency_banner_spec, plus total_inventory and per-variation stock.
  • Logistics: product_weight, ships_to_po_box, disabled_regions, shipping_price_country_code and an is_ltl freight flag.
  • Taxonomy: a comma-joined merchant tag string, repeated as keywords, and true_tag_level1_ids from Wish's internal tag tree.
  • Translation: product_name_translation, holding product_original_name next to the translated title.
  • Images: five sized variants per photo, keyed on the product id with a cache_buster that changes when the file is replaced.

Storefront pages add the seller side: display_name next to a separate lowercase handle, avg_rating as an unrounded float, rating_count, percent_positive_feedback, approved_date as a Unix timestamp, a postal business_address and a secondary_seller_disclosure. Wish Local store pages differ again, carrying coordinates, a normalized address, opening year and weekly hours.

What a Wish scraper extracts
Reviews, caps and where the public data stops

Reviews, caps and where the public data stops

Reviews are the sharpest limit. Wish's sitemap index points at 48 product-review sitemap files, and those URLs are dead: every /product-reviews/ address sampled on 26 August 2026 returned HTTP 404 or HTTP 200 with a zero-byte body. Ratings are available as aggregates only, and a listing with rating_count 0 still reports a rating of 5.0.

Search depth is capped. The feed reports num_found, and on 26 August 2026 it came back as exactly 500 for every non-empty query we tried, so it is a ceiling, not a catalogue total. Paging is a cursor: each response carries next_offset and a feed_ended flag, and the offset does not match the row count. One sampled query returned three rows with next_offset 5, another two rows with next_offset 9. Coverage comes from slicing a query across category, price band and rating facets, whose ids read like merchant_price_10.00_20.00, rating_4, browseonomy_1902 and wss_tier_Gold, labeled Premier Merchant.

Listings expire quietly. A removed product URL returns HTTP 404 with the generic site shell and no state blob, clean enough to record as a delisting date. We drew 25 product URLs from Wish's own May 2024 sitemap and rechecked them on 26 August 2026: 15 were 404, 10 still resolved.

Everything resolves against the country a request appears to come from, so country_code, currency_code and shipping_price_country_code are pinned per run. Merchant records also carry a real postal business_address, so we ship the merchant fields you need and drop the rest at schema level.

How Wish is put together

Wish is a cross-border discount marketplace. Merchants list directly, most ship from Asia, and every product record names the country the item ships from in an origin_country field next to the seller's own business_country_code. There is no shared catalogue: two merchants offering the same item create two unrelated listings.

A product identifier is 24 lowercase hexadecimal characters. The first four bytes are a Unix timestamp equal to the listing creation time, so age is readable before a page is fetched. The canonical page is wish.com/product/{slug}-{id}, with a short form at wish.com/c/{id}. Wish's feed responses also hand out an external_mobile_url under /m/product/, and that path returned 404 on every attempt on 26 August 2026.

Internally Wish still calls a product a contest, a holdover from the app's origins. Images come from canary.contestimg.wish.com with a cache_buster query, and the page state exposes the record as initial_data.product.contest. Category browse sits at wish.com/~/{department}/{slug}, with department slugs such as fashion and home-goods. Search is wish.com/search/{query}, a storefront wish.com/merchant/{merchant_id}, and pickup partner stores sit under wish.com/local/.

Ownership changed in 2024. ContextLogic sold the Wish platform to Singapore-based Qoo10, closing on 19 April 2024. As checked on 26 August 2026 the storefront still runs under the Wish name, and its page state listed 61 shipping countries against 253 billing countries.

Get a Quote
dev_w
25

Developers

customers
500+

Customers worldwide

pages
1 500 000 000+

Pages extracted

stime
15000+

Hours saved for our clients

Plans

Airplane

€199 / one-time

setup fee - included

Data limits100,000
Frequencyone-time
Run timeup to 5 days
Data storing7 days

Helicopter

€169 / mo

setup fee €499

Data limits250,000
Frequencymonthly
Run timeup to 5 days
Data storing14 days

Glasses

€229 / mo

setup fee €499

Data limits1,000,000
Frequencyweekly
Run timeup to 5 days
Data storing30 days

DNA

€549 / mo

setup fee €799

Data limits3,000,000
Frequency3 times daily
Run timesame day
Data storing90 days

What Wish data is used for

Most teams scrape Wish for the price floor. The useful question is not what Wish charges, it is how far below your own shelf price the same or a near-identical item is offered, by which merchant, and shipped from where. Both halves of that answer sit on one record: the price and origin_country.

Because listings are seller-owned rather than catalogue-owned, one design appears many times under different merchants, titles and Wish prices. Grouping those by image hash, tag set and price band turns a scatter of listings into a supply picture: how many sellers carry a product, what spread they price it at, which of them hold a Premier Merchant badge and which sit lower in Wish Standards.

Merchant records make the seller side measurable. business_country_code, approved_date and the postal business_address separate a long-running operation from an account approved last month, and rating_count read against percent_positive_feedback gives a volume-weighted view rather than a bare star average.

For brand protection work the value is coverage and dating. Cheap cross-border marketplaces are where lookalike goods surface early, and a scheduled crawl over your brand terms and product tags leaves a dated record of what was listed, at what price, by which merchant, on which day.

Related Case Studies

The Entire Iherb Supplements Catalog, Captured End-to-End in 3 Days

The Entire Iherb Supplements Catalog, Captured End-to-End in 3 Days

Scraping supplement products from iHerb.com with full details, including descriptions and packaging variations.

Learn More about The Entire Iherb Supplements Catalog, Captured End-to-End in 3 Days
The Lowest Allegro Prices from 150K Eans Collected

The Lowest Allegro Prices from 150K Eans Collected

Daily scraping of lowest prices for 150K products on Allegro.pl to support marketplace pricing and margin optimization.

Learn More about The Lowest Allegro Prices from 150K Eans Collected
Ralph Lauren Monitoring on Amazon, 8 Markets Scanned Into One Clean Dataset

Ralph Lauren Monitoring on Amazon, 8 Markets Scanned Into One Clean Dataset

Regular monitoring of Ralph Lauren clothing, footwear, and accessories sold across Amazon subdomains: AE, DE, ES, FR, IT, NL, PL, UK.

Learn More about Ralph Lauren Monitoring on Amazon, 8 Markets Scanned Into One Clean Dataset
Our Blog

Reads Our Latest News & Blog

Learn how to use web scraping to solve data problems for your organization

6 E-Commerce Sites Like eBay to Scrape in 2026

6 E-Commerce Sites Like eBay to Scrape in 2026

If you sell online, run a marketplace, or advise e-commerce clients, you already know why eBay matters: it’s one of the few places where big retailers compete side by side with thousands of small merchants and private sellers.

Top 8 E-commerce Websites to Scrape in 2026 (From Amazon to 1688)

Top 8 E-commerce Websites to Scrape in 2026 (From Amazon to 1688)

E-commerce teams do not just need “some” competitor data anymore. They need a continuous stream of real prices, discounts, stock levels, reviews, and seller behavior from the platforms that actually shape their markets.

How to Scrape Amazon Data: Benefits, Challenges & Best Practices

How to Scrape Amazon Data: Benefits, Challenges & Best Practices

Amazon provides valuable information gathered in one place: products, reviews, ratings, exclusive offers, news, etc. So scraping data from Amazon will help solve the problems of the time-consuming process of extracting data from e-commerce.

scrapeit logo

Working with ScrapeIt

ScrapeIt is a managed scraping team. We write the crawler, host it, watch it and repair it when the site changes, and you receive data on a schedule in a format your systems already read. No infrastructure on your side, no proxy accounts, no maintenance backlog. If a field you asked for is not public, or a slice is not reachable at the volume you need, we say so during scoping rather than after the build.

FAQ

Does Wish have a public API for product data?

Wish publishes an API, but it is merchant-facing. The Wish Marketplace V3 API at merchant.wish.com uses OAuth 2.0, and the documentation states plainly that the client is an app wanting to access a merchant's data, and that the person granting permission holds a merchant account on Wish. It reads and writes a seller's own listings, orders and shipments. Nothing in it reads another seller's catalogue: an unauthenticated call to any path under merchant.wish.com/api/v3/ returns HTTP 400 with the message Missing access token in authorization header. Unless you are the merchant, public Wish data is collected by scraping the storefront.

Can you extract Wish reviews and star ratings?

Ratings yes, review text no. Every product record carries rating, rating_count, rating_spread and a rating_class string, and merchant records carry avg_rating and percent_positive_feedback. Individual review text is another matter. Wish's sitemap index points at 48 product-review sitemap files, and the /product-reviews/ URLs inside them returned either HTTP 404 or an empty HTTP 200 body on every one we sampled on 26 August 2026. One caution on the aggregates: a listing with rating_count 0 still reports a rating of 5.0, so unrated items have to be filtered out or they will pull an average upward.

How do you match the same Wish product between runs?

By the 24 character hexadecimal id at the end of the URL. The slug in front of it is generated from the title and changes when the merchant edits it, so it is not a key. The id is, and its first four bytes decode to a Unix timestamp equal to the listing creation time, which gives an independent check on listing age and on relisted inventory. The same identifier format is used for merchants, taxonomy tags and Wish Local stores, so one join key covers the whole dataset.

Can you tell which country a Wish seller ships from?

Yes, from two separate fields. Each product record carries origin_country, the country the item ships from, and the attached merchant block carries business_country_code. The storefront page adds a full postal business_address and a secondary_seller_disclosure noting that a merchant may use another entity or seller to supply orders placed on Wish. Those fields do not always agree, and the disagreement is often the interesting part, so we deliver all of them rather than collapsing them into one column.

What happens to Wish data when a listing is removed?

The URL starts returning HTTP 404 with the generic site shell and no product state, which is unambiguous enough to record as a delisting date rather than a gap in the run. That matters more here than on most marketplaces: we sampled 25 product URLs from Wish's own May 2024 sitemap on 26 August 2026 and 15 were already 404. If you want history, the crawl has to run on a schedule from the start, because a removed listing leaves nothing behind to reconstruct.

How does it Work?

Step 1 - Make a Request

You share your needs, expectations, and desired timeframe. We’ll suggest the best solution based on your request and budget.

Step 2 - Configuring Custom Web Crawlers

Our specialists configure the crawlers and extract a sample dataset for your review before proceeding with the full-scale extraction.

Step 3 - Collect and Deliver

Once you approve the sample, we launch the project and start full data collection. We gather, filter, and structure the data for easy use, delivering it on time in your preferred format.

Step 4 - Maintain and Support

Our team manages ongoing processes, monitors website changes, and supports all data extraction cycles. We can also help integrate data into your systems or create dashboards to simplify analysis.

Request a Quote

Tell us more about you and your project information.
Which sites, which fields, how often. A couple of lines is enough.

We reply within 1 business day. No obligation.

scrapiet

Scrapeit Sp. z o.o.
10/208 Legionowa str., 15-099, Bialystok, Poland
NIP: 5423457175
REGON: 523384582