<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alex K</title>
    <description>The latest articles on DEV Community by Alex K (@commercestack).</description>
    <link>https://dev.to/commercestack</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4140809%2Fecd65fa7-7c15-4d9e-a9e8-ee191439a2ef.png</url>
      <title>DEV Community: Alex K</title>
      <link>https://dev.to/commercestack</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/commercestack"/>
    <language>en</language>
    <item>
      <title>How to Collect Amazon US Product Data by ASIN with Apify</title>
      <dc:creator>Alex K</dc:creator>
      <pubDate>Sat, 24 Oct 2026 12:38:58 +0000</pubDate>
      <link>https://dev.to/commercestack/how-to-collect-amazon-us-product-data-by-asin-with-apify-423l</link>
      <guid>https://dev.to/commercestack/how-to-collect-amazon-us-product-data-by-asin-with-apify-423l</guid>
      <description>&lt;p&gt;Amazon product research usually starts with a search, then a shortlist. Fetching a detailed card for every listing adds work before you know which products matter.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;&lt;a href="https://apify.com/commercestack/amazon-us-search-product-scraper" rel="noopener noreferrer"&gt;Amazon US Search &amp;amp; Product Scraper&lt;/a&gt;&lt;/strong&gt; at CommerceStack around that workflow: collect listings, select ASINs, then enrich the shortlist. You can also collect a seller's catalog. This article walks through the public Amazon.com release and its limits.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Start with a small search
&lt;/h2&gt;

&lt;p&gt;Open the Actor in Apify, choose JSON input, and use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"search_only"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"queries"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"sony headphones"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxPagesPerSource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxItems"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"locations"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"com"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"postalCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"10001"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"currency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"USD"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"deliveryCountry"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"US"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Search rows contain the ASIN, title, product URL, cover image, and source-visible price or rating. Source-placement records preserve where a product appeared.&lt;/p&gt;

&lt;p&gt;These limits bound the collection. Two pages or 24 products do &lt;strong&gt;not&lt;/strong&gt; mean the entire search has been exhausted. Check the coverage information in &lt;code&gt;MANIFEST&lt;/code&gt; before treating a run as a complete snapshot.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Enrich the shortlist by ASIN
&lt;/h2&gt;

&lt;p&gt;Use &lt;code&gt;lookup_only&lt;/code&gt; when you need identity, gallery images, the featured offer or explicit no-price state, source seller/rating, and delivery context:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"lookup_only"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"products"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"B0BS1QCFHX"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxItems"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use &lt;code&gt;products&lt;/code&gt; for the additional source-visible description, bullets, attributes, categories, and observed variants:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"products"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"products"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"B0BS1QCFHX"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxItems"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The example ASIN is an input example, not a promise of current stock or price. Optional fields depend on what Amazon displays. Observed variant ASINs are references; the Actor does not automatically fetch every variant card.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Collect a seller catalog
&lt;/h2&gt;

&lt;p&gt;Pass the Amazon merchant ID, rather than the seller's display name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"seller_catalog"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sellerIds"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"A294P4X9EWVXLJ"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxPagesPerSource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxItems"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"enrichProducts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This traverses merchant-filtered listings. Set &lt;code&gt;enrichProducts&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; if you also need full cards. That adds source requests and uses the product-detail price. The catalog merchant and a product's featured seller are separate concepts; do not silently treat them as the same seller.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Call it from a service
&lt;/h2&gt;

&lt;p&gt;The same JSON works through the Apify API. Keep your own token in an environment variable, not in your source code or a public URL. This example starts a bounded lookup and waits up to 60 seconds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;--fail-with-body&lt;/span&gt; &lt;span class="nt"&gt;--request&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s1"&gt;'https://api.apify.com/v2/acts/commercestack~amazon-us-search-product-scraper/runs?build=0.0.5&amp;amp;memory=1024&amp;amp;timeout=240&amp;amp;waitForFinish=60&amp;amp;maxTotalChargeUsd=0.024'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--header&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$APIFY_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--header&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--data&lt;/span&gt; &lt;span class="s1"&gt;'{"mode":"lookup_only","products":["B0BS1QCFHX"],"maxItems":1}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The response includes the run ID, status, &lt;code&gt;defaultDatasetId&lt;/code&gt;, and &lt;code&gt;defaultKeyValueStoreId&lt;/code&gt;. If the run is still active, poll &lt;code&gt;GET /v2/actor-runs/{runId}&lt;/code&gt; until it reaches a terminal status. Then retrieve:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /v2/datasets/{defaultDatasetId}/items?format=json
GET /v2/key-value-stores/{defaultKeyValueStoreId}/records/MANIFEST
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the same Authorization header for these requests. Build &lt;code&gt;0.0.5&lt;/code&gt; is the release used here; pin a build you have tested before connecting a production pipeline. See the &lt;a href="https://docs.apify.com/api/v2" rel="noopener noreferrer"&gt;Apify API reference&lt;/a&gt; for request and pagination details.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Read product rows and errors separately
&lt;/h2&gt;

&lt;p&gt;Filter dataset records by &lt;code&gt;recordType == "product"&lt;/code&gt;. Records with &lt;code&gt;recordType == "occurrence"&lt;/code&gt; describe source/page/position links, not extra products.&lt;/p&gt;

&lt;p&gt;A successful platform run can still have a &lt;strong&gt;partial&lt;/strong&gt; manifest. Inspect it for limits, unattempted inputs, confirmed missing products, and technical failures. In particular:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;product_not_found&lt;/code&gt; requires a recognized Amazon missing-product response.&lt;/li&gt;
&lt;li&gt;Timeouts, blocks, an unrecognized 404, or an absent price are not evidence that a product was deleted.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;fieldAvailability&lt;/code&gt; distinguishes &lt;code&gt;present&lt;/code&gt;, &lt;code&gt;source_absent&lt;/code&gt;, &lt;code&gt;not_requested&lt;/code&gt;, and &lt;code&gt;extraction_failed&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;A cart-only price is reported as &lt;code&gt;priceVisibility: cart_required&lt;/code&gt;; no cart action is performed and no price is invented.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That distinction matters for monitoring: a temporary source failure should not become a false “product removed” alert.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing and choosing a workflow
&lt;/h2&gt;

&lt;p&gt;At publication, the Actor prices are:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;th&gt;Per 1,000 chargeable products&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Search and un-enriched seller listings&lt;/td&gt;
&lt;td&gt;$0.60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASIN lookup&lt;/td&gt;
&lt;td&gt;$2.40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Full product details / enriched seller products&lt;/td&gt;
&lt;td&gt;$2.40&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There is no start fee, and source infrastructure is included. For example, 24 chargeable listings cost &lt;strong&gt;$0.0144&lt;/strong&gt;; 25 chargeable full cards cost &lt;strong&gt;$0.06&lt;/strong&gt;. Actual charges depend on the successfully parsed, chargeable product rows returned.&lt;/p&gt;

&lt;p&gt;Source-occurrence rows, duplicate products within one run, confirmed missing products, and failed products are not charged. Optional data absent from the source does not by itself make a product free. Separate runs are separate observations. Normal storage charges after a run may still apply under your Apify plan.&lt;/p&gt;

&lt;p&gt;Start with listings, then fetch detail only for the shortlist. Set the Actor's page/item/request/time limits and an Apify maximum charge appropriate to your task.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scope of this release
&lt;/h2&gt;

&lt;p&gt;This release supports &lt;strong&gt;Amazon.com, US delivery ZIP codes, and USD&lt;/strong&gt;. It defaults to ZIP 10001 and verifies location context in the source response. Keep the same ZIP when comparing runs; prices and availability can vary by location and time.&lt;/p&gt;

&lt;p&gt;It does not include other Amazon marketplaces, text reviews, a complete inventory of seller offers, automatic variant-card enrichment, or clone-detection logic. It collects the source data for your own workflow and does not launch third-party Actors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://apify.com/commercestack/amazon-us-search-product-scraper" rel="noopener noreferrer"&gt;Try Amazon US Search &amp;amp; Product Scraper on Apify&lt;/a&gt;.&lt;/strong&gt; If a field or workflow is missing, open an issue with the run ID and expected result—never your API token.&lt;/p&gt;

&lt;p&gt;Disclosure: I am the developer behind CommerceStack. The launch illustration was AI-generated; it depicts a workflow, not real product results.&lt;/p&gt;

</description>
      <category>ecommerce</category>
      <category>webscraping</category>
      <category>api</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Scrape Wildberries Search Results and Check Prices by nmId with Apify</title>
      <dc:creator>Alex K</dc:creator>
      <pubDate>Thu, 24 Sep 2026 09:57:44 +0000</pubDate>
      <link>https://dev.to/commercestack/how-to-scrape-wildberries-search-results-and-check-prices-by-nmid-with-apify-2cj9</link>
      <guid>https://dev.to/commercestack/how-to-scrape-wildberries-search-results-and-check-prices-by-nmid-with-apify-2cj9</guid>
      <description>&lt;p&gt;Wildberries catalog data changes quickly. If you need a repeatable way to collect search results, refresh known products, or build your own price-monitoring workflow, you can automate collection with &lt;a href="https://apify.com/commercestack/wildberries-search-product-scraper" rel="noopener noreferrer"&gt;Wildberries Search &amp;amp; Product Scraper&lt;/a&gt; on Apify.&lt;/p&gt;

&lt;p&gt;In this tutorial, we'll use the Actor to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;collect Wildberries search results by keyword&lt;/li&gt;
&lt;li&gt;refresh products by article number (&lt;code&gt;nmId&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;export structured product data&lt;/li&gt;
&lt;li&gt;retrieve gallery image URLs when needed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Actor collects source data. You can use its Dataset in spreadsheets, Python, databases, or your own analytics workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Collect Wildberries search results
&lt;/h2&gt;

&lt;p&gt;Start with the ready-to-run &lt;a href="https://apify.com/commercestack/wildberries-search-product-scraper/examples/wildberries-search-results" rel="noopener noreferrer"&gt;Wildberries search example&lt;/a&gt;. Copy it to your Apify account, replace the sample query, and run it.&lt;/p&gt;

&lt;p&gt;The equivalent Actor input is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"search_only"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"queries"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"наматрасник 140х200"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxPagesPerQuery"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxItems"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"timeoutSeconds"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;180&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can replace the query with any Wildberries search phrase. The current version supports up to five queries and two pages per query, with &lt;code&gt;maxItems&lt;/code&gt; applied separately to each query. It targets the Moscow delivery region. If several queries return the same product, the product is stored once with its observed search references.&lt;/p&gt;

&lt;p&gt;Each listing row has a Wildberries article number (&lt;code&gt;nmId&lt;/code&gt;) and canonical product URL. Depending on the source response, it may also contain seller, brand, stock information, photo count (&lt;code&gt;pics&lt;/code&gt;), rating, review count, search position, and raw price fields. Missing values remain &lt;code&gt;null&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A simplified &lt;strong&gt;illustrative&lt;/strong&gt; row looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"nmId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100000001&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"seller"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Seller A"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"pics"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"reviewRating"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;4.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"feedbacks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1240&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"productUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://www.wildberries.ru/catalog/100000001/detail.aspx"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;pics&lt;/code&gt; is the number of product photos, not an image URL. Export the Dataset as JSON, CSV, or Excel, or read it through the Apify API.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Check known products by nmId
&lt;/h2&gt;

&lt;p&gt;If you already know which products to monitor, use the &lt;a href="https://apify.com/commercestack/wildberries-search-product-scraper/examples/wildberries-article-price-lookup" rel="noopener noreferrer"&gt;article lookup example&lt;/a&gt;. The &lt;code&gt;products&lt;/code&gt; array accepts Wildberries article numbers or canonical product URLs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"lookup_only"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"products"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;192045310&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;313247303&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxItems"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"timeoutSeconds"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;180&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;lookup_only&lt;/code&gt; returns the same lightweight listing-row format without opening full product cards. The run's &lt;code&gt;MANIFEST&lt;/code&gt; record identifies requested articles that were not found. Use keyword search to discover products and &lt;code&gt;lookup_only&lt;/code&gt; to refresh a known list.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Retrieve product gallery URLs
&lt;/h2&gt;

&lt;p&gt;The fast collection modes return photo counts, not gallery URLs. If you need the gallery, use a full-card mode. For a known article:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"products"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"products"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;192045310&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"imageMode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"urls"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxItems"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"timeoutSeconds"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;180&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With &lt;code&gt;imageMode: "urls"&lt;/code&gt;, the full-card row contains observed gallery URLs. With &lt;code&gt;imageMode: "download"&lt;/code&gt;, selected images are stored in the run's key-value store. Full-card rows have a different tariff, so test with a small batch first.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Build a monitoring workflow
&lt;/h2&gt;

&lt;p&gt;A simple recurring workflow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Search Wildberries → collect nmIds → save the list
                                     ↓
                     schedule lookup_only runs
                                     ↓
                     export and compare snapshots
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can use the collected rows for price monitoring, assortment tracking, competitor research, catalog-change detection, or clone analysis. Those comparisons happen downstream; the Actor supplies the source rows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;p&gt;For a small first test, use one query, one page, and &lt;code&gt;maxItems: 20&lt;/code&gt;. At the currently published tariff, a 2 GiB run has a $0.0125 Actor Start charge plus $0.0001 per fast listing row. A 20-row search therefore corresponds to about &lt;strong&gt;$0.0145 in Actor event charges&lt;/strong&gt; before account-specific discounts. Review the current tariff on the Actor page before running it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Important notes about Wildberries data
&lt;/h2&gt;

&lt;p&gt;Wildberries price fields are preserved as original integers together with source and unit metadata. They are not guaranteed checkout prices or personalized discounts. Prices, sellers, ratings, and availability can change between runs.&lt;/p&gt;

&lt;p&gt;For production workflows, inspect both the Dataset and &lt;code&gt;MANIFEST.status&lt;/code&gt;: a run may complete with partial coverage. The current version targets the Moscow delivery region.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the Actor
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://apify.com/commercestack/wildberries-search-product-scraper" rel="noopener noreferrer"&gt;Open Wildberries Search &amp;amp; Product Scraper on Apify&lt;/a&gt;, or start from a ready-to-run example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://apify.com/commercestack/wildberries-search-product-scraper/examples/wildberries-search-results" rel="noopener noreferrer"&gt;Search Wildberries products&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apify.com/commercestack/wildberries-search-product-scraper/examples/wildberries-article-price-lookup" rel="noopener noreferrer"&gt;Check products by article number&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Wildberries Search &amp;amp; Product Scraper is an independent tool and is not affiliated with or endorsed by Wildberries.&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>tutorial</category>
      <category>automation</category>
      <category>api</category>
    </item>
  </channel>
</rss>
