<?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: publicrecords</title>
    <description>The latest articles on DEV Community by publicrecords (@publicrecords).</description>
    <link>https://dev.to/publicrecords</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%2F4157345%2Fbb89b543-bdf7-433d-85aa-1b4bfd39ade8.png</url>
      <title>DEV Community: publicrecords</title>
      <link>https://dev.to/publicrecords</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/publicrecords"/>
    <language>en</language>
    <item>
      <title>Find bestselling Etsy listings in a niche: 10 rows for $0.065</title>
      <dc:creator>publicrecords</dc:creator>
      <pubDate>Mon, 05 Oct 2026 20:16:23 +0000</pubDate>
      <link>https://dev.to/publicrecords/find-bestselling-etsy-listings-in-a-niche-10-rows-for-0065-56ko</link>
      <guid>https://dev.to/publicrecords/find-bestselling-etsy-listings-in-a-niche-10-rows-for-0065-56ko</guid>
      <description>&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I maintain these Actors on Apify Store (&lt;a href="https://apify.com/publicrecords" rel="noopener noreferrer"&gt;publicrecords&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Etsy sellers and product researchers keep asking how to &lt;strong&gt;export Etsy search results&lt;/strong&gt; for a niche and see which listings are already marked &lt;strong&gt;Bestseller&lt;/strong&gt;. Today's walkthrough does that with &lt;a href="https://publicrecords-redirect.publicrecords.workers.dev/r/etsy-bestsellers" rel="noopener noreferrer"&gt;Etsy Search Scraper&lt;/a&gt; — a different path from sorting by price.&lt;/p&gt;

&lt;h2&gt;
  
  
  Price (matches the live listing)
&lt;/h2&gt;

&lt;p&gt;Pay-per-event on Apify Store:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Actor start:&lt;/strong&gt; &lt;code&gt;$0.005&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Listing row:&lt;/strong&gt; &lt;code&gt;$0.006&lt;/code&gt; per delivered listing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;10 rows:&lt;/strong&gt; &lt;code&gt;$0.005 + 10 × $0.006 = $0.065&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Blocked pages are not charged.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paste-ready input (bestsellers in a niche)
&lt;/h2&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;"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;"personalized dog collar"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sort"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"relevance"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"is_best_seller"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&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;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;"maxPages"&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;"fillLazyCards"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"proxyConfiguration"&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;"useApifyProxy"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"apifyProxyGroups"&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;"RESIDENTIAL"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"apifyProxyCountry"&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="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;Swap the keyword for your niche. &lt;code&gt;is_best_seller: true&lt;/code&gt; keeps only listings Etsy marks Bestseller.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the Actor: &lt;a href="https://publicrecords-redirect.publicrecords.workers.dev/r/etsy-bestsellers" rel="noopener noreferrer"&gt;publicrecords/etsy-search-scraper&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Paste the JSON into Input → Start&lt;/li&gt;
&lt;li&gt;Download the dataset (CSV/JSON)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Or from the CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;apify call publicrecords/etsy-search-scraper &lt;span class="nt"&gt;--input&lt;/span&gt; &lt;span class="s1"&gt;'{
  "queries": ["personalized dog collar"],
  "sort": "relevance",
  "is_best_seller": true,
  "maxItems": 10,
  "maxPages": 1,
  "fillLazyCards": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;curl (replace &lt;code&gt;$APIFY_TOKEN&lt;/code&gt;):&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;-sS&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.apify.com/v2/acts/publicrecords~etsy-search-scraper/runs?token=&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;-H&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;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "queries": ["personalized dog collar"],
    "sort": "relevance",
    "is_best_seller": true,
    "maxItems": 10,
    "maxPages": 1,
    "fillLazyCards": true,
    "proxyConfiguration": {
      "useApifyProxy": true,
      "apifyProxyGroups": ["RESIDENTIAL"],
      "apifyProxyCountry": "US"
    }
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What you get
&lt;/h2&gt;

&lt;p&gt;Each row is a live search listing: id, title, price, rating, reviews, badges (including Bestseller), shop, and rank in Etsy's order for that query.&lt;/p&gt;

&lt;p&gt;Example repo for the price-sort path: &lt;a href="https://github.com/GeminiGeorge22/etsy-search-example" rel="noopener noreferrer"&gt;GeminiGeorge22/etsy-search-example&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Again: disclosure — I maintain &lt;code&gt;publicrecords/etsy-search-scraper&lt;/code&gt; on Apify Store.&lt;/p&gt;

</description>
      <category>etsy</category>
      <category>scraping</category>
      <category>apify</category>
      <category>ecommerce</category>
    </item>
    <item>
      <title>Scrape Etsy search results sorted by price: 10 rows for $0.065</title>
      <dc:creator>publicrecords</dc:creator>
      <pubDate>Mon, 05 Oct 2026 17:58:37 +0000</pubDate>
      <link>https://dev.to/publicrecords/scrape-etsy-search-results-sorted-by-price-10-rows-for-0065-512i</link>
      <guid>https://dev.to/publicrecords/scrape-etsy-search-results-sorted-by-price-10-rows-for-0065-512i</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclosure: I publish and maintain the Actor used here (&lt;a href="https://publicrecords-redirect.publicrecords.workers.dev/r/etsy-price-sort" rel="noopener noreferrer"&gt;publicrecords/etsy-search-scraper&lt;/a&gt; on Apify Store). This is the publisher account.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You have an Etsy search query and you want the results as rows you can sort and filter, not a screenshot of page one. Here's the shortest route I know, with a real run as proof.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you get
&lt;/h2&gt;

&lt;p&gt;Each Etsy search result comes back as one row with &lt;code&gt;listing_id&lt;/code&gt;, &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;price&lt;/code&gt;, &lt;code&gt;currency&lt;/code&gt;, &lt;code&gt;shop_name&lt;/code&gt;, &lt;code&gt;shop_url&lt;/code&gt;, &lt;code&gt;rating_value&lt;/code&gt;, &lt;code&gt;review_count&lt;/code&gt;, badges (&lt;code&gt;bestseller&lt;/code&gt;, &lt;code&gt;star_seller&lt;/code&gt;, &lt;code&gt;etsys_pick&lt;/code&gt;, &lt;code&gt;popular_now&lt;/code&gt;, &lt;code&gt;free_shipping&lt;/code&gt;), &lt;code&gt;position&lt;/code&gt; and &lt;code&gt;page&lt;/code&gt;. You can pass a keyword, a market, or a category URL.&lt;/p&gt;

&lt;h2&gt;
  
  
  The input (copy this)
&lt;/h2&gt;

&lt;p&gt;This is the exact input from a Store-page run on 2026-10-03: the 10 cheapest "ceramic mug" listings priced $10–$40.&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;"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;"ceramic mug"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sort"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"price_asc"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"minPrice"&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;"maxPrice"&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;"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;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;"maxPages"&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;"fillLazyCards"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"proxyConfiguration"&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;"useApifyProxy"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"apifyProxyGroups"&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;"RESIDENTIAL"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"apifyProxyCountry"&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="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;ul&gt;
&lt;li&gt;
&lt;code&gt;sort&lt;/code&gt; takes one of &lt;code&gt;relevance&lt;/code&gt;, &lt;code&gt;newest&lt;/code&gt;, &lt;code&gt;price_asc&lt;/code&gt;, &lt;code&gt;price_desc&lt;/code&gt;, &lt;code&gt;top_reviews&lt;/code&gt;, the same options as Etsy's own sort menu.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;minPrice&lt;/code&gt; / &lt;code&gt;maxPrice&lt;/code&gt; are whole currency units.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;maxItems&lt;/code&gt; and &lt;code&gt;maxPages&lt;/code&gt; cap the run (Etsy itself stops at 20 pages).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Run it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;In the browser:&lt;/strong&gt; open the &lt;a href="https://console.apify.com/actors/JbNpPvG1Z7YtM9onP/input" rel="noopener noreferrer"&gt;Actor in Apify Console&lt;/a&gt;, switch the input to JSON, paste the block above, and press Start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From a terminal:&lt;/strong&gt; save the block as &lt;code&gt;input.json&lt;/code&gt; and run:&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;-s&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"https://api.apify.com/v2/acts/publicrecords~etsy-search-scraper/run-sync-get-dataset-items?token=&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;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; @input.json &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; rows.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or clone the one-command example repo, which has the same &lt;code&gt;input.json&lt;/code&gt; and the full sample output: &lt;a href="https://github.com/GeminiGeorge22/etsy-search-example" rel="noopener noreferrer"&gt;GeminiGeorge22/etsy-search-example&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proof run
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Actor&lt;/td&gt;
&lt;td&gt;publicrecords/etsy-search-scraper, build 0.2.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Run ID&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;fB8Y28DNUy5kJ9xfg&lt;/code&gt; (Store / console origin, 2026-10-03)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Status&lt;/td&gt;
&lt;td&gt;SUCCEEDED, 10 rows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost&lt;/td&gt;
&lt;td&gt;actor-start $0.005 + 10 × listing-row $0.006 = &lt;strong&gt;$0.065&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The first 3 of the 10 rows:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Title&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Shop&lt;/th&gt;
&lt;th&gt;Rating&lt;/th&gt;
&lt;th&gt;Reviews&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1980's Christmas Coffee Mug&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;td&gt;TheNostalgiaHunter&lt;/td&gt;
&lt;td&gt;4.9&lt;/td&gt;
&lt;td&gt;~2,200*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Daisy a Day Coffee Mug, 11oz Ceramic Mug&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;td&gt;SmugMugMugs&lt;/td&gt;
&lt;td&gt;5.0&lt;/td&gt;
&lt;td&gt;51&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;America 250th Birthday Mug, 1776 Bicentennial Style&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;td&gt;SouthernRoyaltyUS&lt;/td&gt;
&lt;td&gt;5.0&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;*Etsy shows "2.2k", so that row comes back with &lt;code&gt;review_count_approx: true&lt;/code&gt; instead of a made-up exact number.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing, plainly
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;$6 per 1,000 listing rows, plus a $0.005 start fee per run.&lt;/li&gt;
&lt;li&gt;Runs on Apify residential proxy by default. That's passthrough: Apify bills proxy usage, and I add no markup.&lt;/li&gt;
&lt;li&gt;A blocked page costs nothing. If a row comes back without a price, title or shop, you still get it, flagged &lt;code&gt;incomplete: true&lt;/code&gt;, and you aren't charged for it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next step: who is selling?
&lt;/h2&gt;

&lt;p&gt;Search rows tell you &lt;em&gt;what&lt;/em&gt; ranks. If you also want to know how fast a shop is selling, feed the &lt;code&gt;shop_name&lt;/code&gt; values into the companion Actor Etsy Shop Sales Tracker. It returns one row per shop with daily and 30-day sales counts.&lt;/p&gt;

&lt;p&gt;Questions or a query that breaks it? Leave a comment. I maintain both Actors and I read the comments.&lt;/p&gt;

</description>
      <category>etsy</category>
      <category>webscraping</category>
      <category>apify</category>
      <category>ecommerce</category>
    </item>
  </channel>
</rss>
