<?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: MindMoxie</title>
    <description>The latest articles on DEV Community by MindMoxie (@mindmoxie).</description>
    <link>https://dev.to/mindmoxie</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%2F4182993%2F320a2ec6-ec91-42c1-8a15-8cac0cea133f.jpg</url>
      <title>DEV Community: MindMoxie</title>
      <link>https://dev.to/mindmoxie</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mindmoxie"/>
    <language>en</language>
    <item>
      <title>I built a free resale price API (no key) for sneakers, consoles and watches. Here's what 29 items sell for this week</title>
      <dc:creator>MindMoxie</dc:creator>
      <pubDate>Fri, 30 Oct 2026 20:23:56 +0000</pubDate>
      <link>https://dev.to/mindmoxie/i-built-a-free-resale-price-api-no-key-for-sneakers-consoles-and-watches-heres-what-29-items-1kb9</link>
      <guid>https://dev.to/mindmoxie/i-built-a-free-resale-price-api-no-key-for-sneakers-consoles-and-watches-heres-what-29-items-1kb9</guid>
      <description>&lt;p&gt;Resale price sites usually give you one number with no source, no date and no sample size. I wanted the opposite, so I built &lt;strong&gt;&lt;a href="https://www.aiplannermail.com/" rel="noopener noreferrer"&gt;SoldSignal&lt;/a&gt;&lt;/strong&gt;: a free weekly resale price index where every price says &lt;strong&gt;what it is&lt;/strong&gt; (SOLD = finished sales, ASK = current listings), &lt;strong&gt;how many data points&lt;/strong&gt; sit behind it, and &lt;strong&gt;what a seller actually keeps after fees&lt;/strong&gt; on each platform.&lt;/p&gt;

&lt;p&gt;It covers 29 items this week: sneakers, gaming hardware, Pokémon/Labubu/Stanley, and Rolex/Omega/Tudor/Cartier/Seiko watches.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the data says (week 2026-W44, collected Oct 29, 2026)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Sneakers (GOAT, median of the last recorded sale per size, men's 7–13, new in box)&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Shoe&lt;/th&gt;
&lt;th&gt;Median last sale&lt;/th&gt;
&lt;th&gt;Retail&lt;/th&gt;
&lt;th&gt;vs retail&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Travis Scott x Jordan 1 Low 'Mocha'&lt;/td&gt;
&lt;td&gt;$2,109&lt;/td&gt;
&lt;td&gt;$130&lt;/td&gt;
&lt;td&gt;+1,522%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Travis Scott x Air Force 1 'Ice Blue'&lt;/td&gt;
&lt;td&gt;$554&lt;/td&gt;
&lt;td&gt;$120&lt;/td&gt;
&lt;td&gt;+362%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Air Jordan 1 High 'Chicago Lost &amp;amp; Found'&lt;/td&gt;
&lt;td&gt;$293&lt;/td&gt;
&lt;td&gt;$180&lt;/td&gt;
&lt;td&gt;+63%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Air Jordan 11 'Gamma Blue' (2025)&lt;/td&gt;
&lt;td&gt;$342&lt;/td&gt;
&lt;td&gt;$230&lt;/td&gt;
&lt;td&gt;+49%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Air Jordan 4 'Bred Reimagined'&lt;/td&gt;
&lt;td&gt;$248&lt;/td&gt;
&lt;td&gt;$215&lt;/td&gt;
&lt;td&gt;+15%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Yeezy 350 V2 'Bone'&lt;/td&gt;
&lt;td&gt;$245&lt;/td&gt;
&lt;td&gt;$220&lt;/td&gt;
&lt;td&gt;+11%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Gaming (Mercari US sold listings)&lt;/strong&gt;: Nintendo Switch OLED &lt;strong&gt;$170&lt;/strong&gt; (18 sales), Switch Lite &lt;strong&gt;$100&lt;/strong&gt; (31 sales), Xbox Series X &lt;strong&gt;$502&lt;/strong&gt; (10 sales).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Collectibles (Mercari US sold)&lt;/strong&gt;: Labubu 'Have a Seat' blind box &lt;strong&gt;$34&lt;/strong&gt; (66 sales), Stanley Quencher 40 oz &lt;strong&gt;$44.50&lt;/strong&gt; (30 sales), Pokémon Prismatic Evolutions ETB &lt;strong&gt;$112&lt;/strong&gt; (19 sales).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Watches (Chrono24 asking prices, USD, exact reference only)&lt;/strong&gt;: Rolex Daytona 126500LN &lt;strong&gt;$36,534&lt;/strong&gt;, GMT-Master II 'Pepsi' &lt;strong&gt;$27,997&lt;/strong&gt;, Submariner Date 126610LN &lt;strong&gt;$15,500&lt;/strong&gt;, Tudor Black Bay 58 &lt;strong&gt;$4,099&lt;/strong&gt;, Seiko SPB143 &lt;strong&gt;$999&lt;/strong&gt;. These are asks, so real sales usually close lower.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fees change the answer
&lt;/h2&gt;

&lt;p&gt;Same $248 sale, different platform, different payout (2026 US fee rules, sources linked on the &lt;a href="https://www.aiplannermail.com/methodology/#fees" rel="noopener noreferrer"&gt;methodology page&lt;/a&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;eBay (sneakers $150+): you keep about &lt;strong&gt;$228&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Mercari: about &lt;strong&gt;$223&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;GOAT: about &lt;strong&gt;$213&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The site only calls a platform "best" when it has real prices from at least two of them. Otherwise it shows the fee-only comparison and says so. There's also a &lt;a href="https://www.aiplannermail.com/fee-calculator/" rel="noopener noreferrer"&gt;fee calculator&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use the data (free, no key, CC BY 4.0)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;base&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.aiplannermail.com/api/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/items.json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;items&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;price&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;priceType&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;n =&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sampleSize&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="n"&gt;one&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/items/nintendo-switch-oled.json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;one&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;summary&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;   &lt;span class="c1"&gt;# a dated, citable sentence
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;API index: &lt;code&gt;/api/v1/items.json&lt;/code&gt;, one file per item: &lt;code&gt;/api/v1/items/&amp;lt;slug&amp;gt;.json&lt;/code&gt;, &lt;a href="https://www.aiplannermail.com/api/openapi.json" rel="noopener noreferrer"&gt;OpenAPI spec&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CSV/JSON per ISO week, frozen forever: &lt;a href="https://www.aiplannermail.com/data/" rel="noopener noreferrer"&gt;Data &amp;amp; API&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;For LLMs and agents: &lt;a href="https://www.aiplannermail.com/llms.txt" rel="noopener noreferrer"&gt;&lt;code&gt;llms.txt&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://www.aiplannermail.com/llms-full.txt" rel="noopener noreferrer"&gt;&lt;code&gt;llms-full.txt&lt;/code&gt;&lt;/a&gt;, and a Markdown copy of every item page (&lt;code&gt;&amp;lt;page&amp;gt;/index.md&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How it's built
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Weekly Apify runs (my own open actors for &lt;a href="https://apify.com/malek_oweis/stockx-search-price-scraper" rel="noopener noreferrer"&gt;StockX&lt;/a&gt;, &lt;a href="https://apify.com/malek_oweis/goat-sneaker-price-scraper" rel="noopener noreferrer"&gt;GOAT&lt;/a&gt;, &lt;a href="https://apify.com/malek_oweis/mercari-sold-listings-scraper" rel="noopener noreferrer"&gt;Mercari&lt;/a&gt; and &lt;a href="https://apify.com/malek_oweis/chrono24-watch-listing-scraper" rel="noopener noreferrer"&gt;Chrono24&lt;/a&gt;), about $0.15 a week.&lt;/li&gt;
&lt;li&gt;Exact-item matching: GOAT products pinned by hand-verified title; Mercari titles need key words, no exclusion words ("bundle", "for parts", "Zelda edition"...) and a sane price band; Chrono24 needs the exact reference number and USD. Hand-checking matches caught 6 wrong products before launch.&lt;/li&gt;
&lt;li&gt;Python + Jinja2 static site on Netlify, 155 pytest tests (including one that checks the browser fee calculator matches the Python fee engine to the cent). If any test fails, the weekly deploy stops and last week's site stays up.&lt;/li&gt;
&lt;li&gt;StockX shows prices in the visitor's local currency, and one run quietly mixed in euros. The StockX actor now labels every row with its &lt;code&gt;currency&lt;/code&gt;, and the site only uses StockX rows that are in USD (and never lets StockX alone publish an item).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every week is archived, so price history builds up from here. Feedback and item requests welcome in the comments.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>api</category>
      <category>python</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Nike Dunk Low resale prices in 2026: the most traded pairs sell under retail</title>
      <dc:creator>MindMoxie</dc:creator>
      <pubDate>Wed, 21 Oct 2026 17:57:12 +0000</pubDate>
      <link>https://dev.to/mindmoxie/nike-dunk-low-resale-prices-in-2026-the-most-traded-pairs-sell-under-retail-3k2p</link>
      <guid>https://dev.to/mindmoxie/nike-dunk-low-resale-prices-in-2026-the-most-traded-pairs-sell-under-retail-3k2p</guid>
      <description>&lt;p&gt;The Dunk Low is the most traded sneaker on StockX, so "what is my Dunk worth?" is a question a lot of people ask. I pulled the first 40 results for the search &lt;strong&gt;"nike dunk low"&lt;/strong&gt; from StockX on &lt;strong&gt;October 21, 2026&lt;/strong&gt; and looked at what they actually sold for over the last 90 days.&lt;/p&gt;

&lt;p&gt;Short version: the pairs that trade the most sell &lt;strong&gt;under retail&lt;/strong&gt;, and almost all of the premium sits in a small group of SB collabs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The sample
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Source: StockX search "nike dunk low", first 40 products (StockX's own relevance order)&lt;/li&gt;
&lt;li&gt;Pulled: 2026-10-21 with the &lt;a href="https://apify.com/malek_oweis/stockx-search-price-scraper" rel="noopener noreferrer"&gt;StockX Scraper&lt;/a&gt; on Apify (one run, 22 seconds)&lt;/li&gt;
&lt;li&gt;Fields used: &lt;code&gt;avgPrice90d&lt;/code&gt;, &lt;code&gt;salesCount90d&lt;/code&gt;, &lt;code&gt;lastSale&lt;/code&gt;, &lt;code&gt;pricePremiumPct&lt;/code&gt; (StockX's own premium vs retail)&lt;/li&gt;
&lt;li&gt;The search also returns a few Dunk Highs and one GS (kids) size run; I kept them and labeled them&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Finding 1: 23 of 40 trade below retail
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Premium vs retail&lt;/th&gt;
&lt;th&gt;Pairs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Below retail&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0% to +50%&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;+50% to +100%&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Over +100%&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;More than half of the sample sells for less than its retail price. If you are buying a general-release Dunk, the resale market is often the cheaper place to buy it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 2: the volume leaders are the discounted ones
&lt;/h2&gt;

&lt;p&gt;Top 5 by sales in the last 90 days:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pair&lt;/th&gt;
&lt;th&gt;Sales (90d)&lt;/th&gt;
&lt;th&gt;Avg price (90d)&lt;/th&gt;
&lt;th&gt;Premium&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Dunk Low Retro White Black "Panda"&lt;/td&gt;
&lt;td&gt;2,370&lt;/td&gt;
&lt;td&gt;$72&lt;/td&gt;
&lt;td&gt;-47%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dunk Low Retro "Panda" (Women's)&lt;/td&gt;
&lt;td&gt;1,333&lt;/td&gt;
&lt;td&gt;$54&lt;/td&gt;
&lt;td&gt;-57.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dunk Low Retro Khaki Team Red Pearl White (Women's)&lt;/td&gt;
&lt;td&gt;1,280&lt;/td&gt;
&lt;td&gt;$146&lt;/td&gt;
&lt;td&gt;+55.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dunk Low White Light Smoke Grey&lt;/td&gt;
&lt;td&gt;1,197&lt;/td&gt;
&lt;td&gt;$69&lt;/td&gt;
&lt;td&gt;-52.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dunk Low Pro SB Black White Gum&lt;/td&gt;
&lt;td&gt;835&lt;/td&gt;
&lt;td&gt;$117&lt;/td&gt;
&lt;td&gt;-8.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The Panda alone did 2,370 sales in 90 days (12,107 in a year) at an average of $72, about half of retail. Four of the five most traded pairs sell below retail. Volume and premium are not the same thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 3: the premium lives in SB collabs
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pair&lt;/th&gt;
&lt;th&gt;Avg price (90d)&lt;/th&gt;
&lt;th&gt;Premium&lt;/th&gt;
&lt;th&gt;Sales (90d)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SB Dunk Low "Mummy"&lt;/td&gt;
&lt;td&gt;$453&lt;/td&gt;
&lt;td&gt;+571.2%&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SB Dunk Low Concepts "Orange Lobster"&lt;/td&gt;
&lt;td&gt;$397&lt;/td&gt;
&lt;td&gt;+183.3%&lt;/td&gt;
&lt;td&gt;366&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SB Dunk Low Futura Laboratories "Bleached Aqua"&lt;/td&gt;
&lt;td&gt;$265&lt;/td&gt;
&lt;td&gt;+129.6%&lt;/td&gt;
&lt;td&gt;340&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SB Dunk Low Pro "White Gum"&lt;/td&gt;
&lt;td&gt;$161&lt;/td&gt;
&lt;td&gt;+81.8%&lt;/td&gt;
&lt;td&gt;316&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SB Dunk Low "Nardwuar"&lt;/td&gt;
&lt;td&gt;$172&lt;/td&gt;
&lt;td&gt;+70.4%&lt;/td&gt;
&lt;td&gt;813&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All five of the biggest premiums in the sample are SB Dunks, and four of them are collaborations. They also trade far less: the Mummy did 100 sales in 90 days against 2,370 for the Panda.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 4: Halloween Dunks do not all hold up
&lt;/h2&gt;

&lt;p&gt;It is October, so I looked at the spooky ones in the sample:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pair&lt;/th&gt;
&lt;th&gt;Avg price (90d)&lt;/th&gt;
&lt;th&gt;Premium&lt;/th&gt;
&lt;th&gt;Sales (90d)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SB Dunk Low "Mummy" (2021)&lt;/td&gt;
&lt;td&gt;$453&lt;/td&gt;
&lt;td&gt;+571.2%&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dunk Low "Shibuya Halloween" (release 2026-10-23)&lt;/td&gt;
&lt;td&gt;$239&lt;/td&gt;
&lt;td&gt;+7.7%&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SB Dunk Low "Krampus"&lt;/td&gt;
&lt;td&gt;$101&lt;/td&gt;
&lt;td&gt;-6.2%&lt;/td&gt;
&lt;td&gt;252&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dunk Low Retro QS "Halloween Skull" (2024)&lt;/td&gt;
&lt;td&gt;$96&lt;/td&gt;
&lt;td&gt;-47.9%&lt;/td&gt;
&lt;td&gt;158&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The 2021 SB Mummy is the most expensive pair in the whole pull, while the 2024 Halloween Skull GR sells at about half of retail. The Shibuya pair has only 12 pre-release sales, which is too few to say anything yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to pull this yourself
&lt;/h2&gt;

&lt;p&gt;Run the &lt;a href="https://apify.com/malek_oweis/stockx-search-price-scraper" rel="noopener noreferrer"&gt;StockX Scraper&lt;/a&gt; with this input:&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;"nike dunk low"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxProductsPerInput"&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="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;There is also a ready-made example task for this search: &lt;a href="https://apify.com/malek_oweis/stockx-search-price-scraper/examples/nike-dunk-low-prices" rel="noopener noreferrer"&gt;Nike Dunk Low prices&lt;/a&gt;. The output has one row per product with &lt;code&gt;avgPrice90d&lt;/code&gt;, &lt;code&gt;salesCount90d&lt;/code&gt;, &lt;code&gt;salesCountYear&lt;/code&gt;, &lt;code&gt;lastSale&lt;/code&gt;, &lt;code&gt;pricePremiumPct&lt;/code&gt;, &lt;code&gt;volatility&lt;/code&gt; and the product URL. A run of 40 products took 22 seconds.&lt;/p&gt;

&lt;p&gt;Cleaning I did:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Kept StockX's &lt;code&gt;pricePremiumPct&lt;/code&gt; as is instead of computing my own (the &lt;code&gt;retailPrice&lt;/code&gt; field came back empty for this search).&lt;/li&gt;
&lt;li&gt;Labeled the Dunk Highs and the GS (kids) Panda instead of dropping them, since they show up in the same search a buyer would run.&lt;/li&gt;
&lt;li&gt;Used &lt;code&gt;avgPrice90d&lt;/code&gt; for "what it sells for" and &lt;code&gt;lastSale&lt;/code&gt; only as a single data point.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;40 products, one search, one day. StockX's search order decides which 40 you get.&lt;/li&gt;
&lt;li&gt;90-day averages mix all sizes. Size changes the price a lot (see my &lt;a href="https://dev.to/mindmoxie"&gt;Jordan 4 size breakdown&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Premium is StockX's number against the original retail price, not adjusted for fees or inflation.&lt;/li&gt;
&lt;li&gt;A brand-new release like the Shibuya Halloween pair has too few sales to trust.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to track a specific pair over time, schedule the same input daily and compare &lt;code&gt;avgPrice90d&lt;/code&gt; week by week.&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>datascience</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Air Jordan 4 resale: the size you buy changes the price more than the colorway hype</title>
      <dc:creator>MindMoxie</dc:creator>
      <pubDate>Tue, 13 Oct 2026 19:39:34 +0000</pubDate>
      <link>https://dev.to/mindmoxie/air-jordan-4-resale-the-size-you-buy-changes-the-price-more-than-the-colorway-hype-37g4</link>
      <guid>https://dev.to/mindmoxie/air-jordan-4-resale-the-size-you-buy-changes-the-price-more-than-the-colorway-hype-37g4</guid>
      <description>&lt;p&gt;Sneaker price talk usually quotes one number per shoe. On GOAT there is no single price. Every size has its own lowest ask, and the gap between sizes of the same shoe is often bigger than the gap between two different colorways.&lt;/p&gt;

&lt;p&gt;I pulled per-size prices for 21 Air Jordan 4 colorways from GOAT (US market, new in box) on October 13, 2026. That gave 458 size-level prices. Here is what they show.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Eight of 21 colorways are available below retail
&lt;/h2&gt;

&lt;p&gt;A lot of recent Jordan 4s can be bought new for less than the store price, if you take the cheapest size.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Colorway&lt;/th&gt;
&lt;th&gt;Retail&lt;/th&gt;
&lt;th&gt;Lowest ask&lt;/th&gt;
&lt;th&gt;vs retail&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SE Craft 'Photon Dust'&lt;/td&gt;
&lt;td&gt;$210&lt;/td&gt;
&lt;td&gt;$125&lt;/td&gt;
&lt;td&gt;-40%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'Flight Club' (2026)&lt;/td&gt;
&lt;td&gt;$220&lt;/td&gt;
&lt;td&gt;$149&lt;/td&gt;
&lt;td&gt;-32%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'Rare Air - Tour Yellow' (2026)&lt;/td&gt;
&lt;td&gt;$220&lt;/td&gt;
&lt;td&gt;$155&lt;/td&gt;
&lt;td&gt;-30%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'Bred Reimagined'&lt;/td&gt;
&lt;td&gt;$215&lt;/td&gt;
&lt;td&gt;$178&lt;/td&gt;
&lt;td&gt;-17%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'Military Blue' (2024)&lt;/td&gt;
&lt;td&gt;$215&lt;/td&gt;
&lt;td&gt;$189&lt;/td&gt;
&lt;td&gt;-12%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The ones that hold a real premium are the older, proven pairs:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Colorway&lt;/th&gt;
&lt;th&gt;Retail&lt;/th&gt;
&lt;th&gt;Lowest ask&lt;/th&gt;
&lt;th&gt;vs retail&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;'Red Thunder' (2022)&lt;/td&gt;
&lt;td&gt;$190&lt;/td&gt;
&lt;td&gt;$371&lt;/td&gt;
&lt;td&gt;+95%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'White Thunder' (2024)&lt;/td&gt;
&lt;td&gt;$215&lt;/td&gt;
&lt;td&gt;$329&lt;/td&gt;
&lt;td&gt;+53%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'Military Black' (2022)&lt;/td&gt;
&lt;td&gt;$210&lt;/td&gt;
&lt;td&gt;$319&lt;/td&gt;
&lt;td&gt;+52%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SE 'Black Canvas' (2022)&lt;/td&gt;
&lt;td&gt;$210&lt;/td&gt;
&lt;td&gt;$304&lt;/td&gt;
&lt;td&gt;+45%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'Black Cat' (2025)&lt;/td&gt;
&lt;td&gt;$225&lt;/td&gt;
&lt;td&gt;$324&lt;/td&gt;
&lt;td&gt;+44%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  2. The "lowest ask" is usually for a size you do not wear
&lt;/h2&gt;

&lt;p&gt;For the typical colorway, the middle-priced size costs 25% more than the cheapest size. The headline price on a product page is the cheapest size, so most buyers pay more than that number.&lt;/p&gt;

&lt;p&gt;Example: 'Military Blue' 2024 has a lowest ask of $189 (size 14). The median size is $246. Size 6.5 is $613.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Small sizes cost the most
&lt;/h2&gt;

&lt;p&gt;I compared each size to the median ask of its own shoe, then took the middle value across all 21 colorways.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;US men's size&lt;/th&gt;
&lt;th&gt;Price vs the shoe's median&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;5.5 to 6.5&lt;/td&gt;
&lt;td&gt;+37% to +62%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;+34%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7 to 7.5&lt;/td&gt;
&lt;td&gt;+7% to +9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8 to 9&lt;/td&gt;
&lt;td&gt;about the median&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9.5 to 12&lt;/td&gt;
&lt;td&gt;6% to 11% below&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15 to 17&lt;/td&gt;
&lt;td&gt;+17% to +39%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Sizes 9.5 to 12 are the cheapest because that is where the supply is. Sizes 5.5 to 6.5 carry the largest premium. If you resell, the same shoe in a 6 can be worth $100 more than in an 11.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Asks sit close to the last sale
&lt;/h2&gt;

&lt;p&gt;Across the 458 size prices, the median gap between the current lowest ask and the last sold price for that size was 0%. About 40% of asks were above the last sale and 60% at or below it. For in-stock sizes, the lowest ask is a fair guide to what the pair actually trades at. The extreme asks ($2,000+ on a rare size) are the exception: those are single sellers with no competition, not a market price.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to pull this yourself
&lt;/h2&gt;

&lt;p&gt;GOAT has no public price API and blocks plain requests. I built a tool on Apify that returns this data as a table: &lt;a href="https://apify.com/malek_oweis/goat-sneaker-price-scraper" rel="noopener noreferrer"&gt;GOAT Sneaker Price Scraper&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Input used for this 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;"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;"air jordan 4 retro"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxProductsPerInput"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"includeSizePrices"&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="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;Each product row has the retail price, release date, lowest ask, cheapest and most expensive size, premium vs retail, and a list of every size with its lowest ask, instant-ship ask, last sold price, and stock. Export to CSV, Excel, or JSON. It costs $3 per 1,000 products.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits to know about
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Prices are US market, in US dollars. GOAT shows different prices to visitors from other countries.&lt;/li&gt;
&lt;li&gt;"New" means new shoes in a good box. Used and damaged-box pairs are a separate option.&lt;/li&gt;
&lt;li&gt;This is a one-day snapshot of 21 colorways. One unreleased pair with a single $2,059 listing was removed.&lt;/li&gt;
&lt;li&gt;Size-level runs can be slow when GOAT is under load. A 25-product run with all sizes took about 10 minutes on the day I wrote this.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a number looks wrong for a pair you know well, tell me and I will check it.&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>datascience</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>What a used Nintendo Switch actually sells for on Mercari (and how to pull sold prices yourself)</title>
      <dc:creator>MindMoxie</dc:creator>
      <pubDate>Tue, 13 Oct 2026 19:38:49 +0000</pubDate>
      <link>https://dev.to/mindmoxie/what-a-used-nintendo-switch-actually-sells-for-on-mercari-and-how-to-pull-sold-prices-yourself-5ae4</link>
      <guid>https://dev.to/mindmoxie/what-a-used-nintendo-switch-actually-sells-for-on-mercari-and-how-to-pull-sold-prices-yourself-5ae4</guid>
      <description>&lt;p&gt;If you resell consoles, the asking prices on Mercari tell you very little. Sellers list high and then cut. What matters is the price the item sold at.&lt;/p&gt;

&lt;p&gt;I pulled the most recent sold listings for three searches on Mercari US on October 13, 2026 and cleaned them up. Here is what came out, and how you can run the same check for any product.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers
&lt;/h2&gt;

&lt;p&gt;I kept only listings in the Consoles category and removed boxes, cases, and "for parts" units.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nintendo Switch OLED&lt;/strong&gt; (31 sold consoles)&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Condition&lt;/th&gt;
&lt;th&gt;Sales&lt;/th&gt;
&lt;th&gt;Median sold price&lt;/th&gt;
&lt;th&gt;Range&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Like new&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;$189&lt;/td&gt;
&lt;td&gt;$139 to $279&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;$161&lt;/td&gt;
&lt;td&gt;$106 to $355&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;New&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;$290&lt;/td&gt;
&lt;td&gt;$243 to $337&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Nintendo Switch Lite&lt;/strong&gt; (33 sold consoles)&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Condition&lt;/th&gt;
&lt;th&gt;Sales&lt;/th&gt;
&lt;th&gt;Median sold price&lt;/th&gt;
&lt;th&gt;Range&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Like new&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;$113&lt;/td&gt;
&lt;td&gt;$83 to $189&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;$90&lt;/td&gt;
&lt;td&gt;$50 to $180&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fair or Poor&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;about $48&lt;/td&gt;
&lt;td&gt;$44 to $65&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Nintendo Switch 2&lt;/strong&gt;: only 12 real console sales in the sample, median about $395. Too few to split by condition.&lt;/p&gt;

&lt;p&gt;These are small samples from one day, so treat them as a snapshot, not a price guide.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things the data showed
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Most sellers had to cut their price to sell.&lt;/strong&gt; 26 of the 31 OLED consoles and 26 of the 33 Lite consoles sold below their first asking price. The median cut was about 27%. The median first ask for an OLED was $250; the median sale was $167. If you price from active listings, you are pricing from numbers that mostly did not work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. "Like new" is worth about $25 more than "Good".&lt;/strong&gt; On both models the gap between the two most common conditions was $23 to $28. That is the real value of a clean screen and a box, and it is smaller than many sellers assume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. A keyword search is mostly noise.&lt;/strong&gt; The search "nintendo switch 2 console" returned 300 sold listings. Only 30 were in the Consoles category, and only 12 were actual Switch 2 consoles. The rest were games, cases, and boxes. The raw median for that search was $40, which is meaningless. You have to filter by category and read the titles before you trust any average.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to pull the same data
&lt;/h2&gt;

&lt;p&gt;Mercari has no public API, and the search page loads its results in the browser, so a simple page download returns an empty shell.&lt;/p&gt;

&lt;p&gt;I built a small tool for this on Apify: &lt;a href="https://apify.com/malek_oweis/mercari-sold-listings-scraper" rel="noopener noreferrer"&gt;Mercari Sold Listings Scraper&lt;/a&gt;. You give it search terms, it returns one row per listing.&lt;/p&gt;

&lt;p&gt;Input used for this 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;"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="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"nintendo switch oled console"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"nintendo switch lite console"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"nintendo switch 2 console"&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;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sold"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxItemsPerSearch"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;300&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;Each row has the title, sold price, first asking price, price drop in percent, condition, brand, category, listing date, and the listing URL. You can export to CSV, Excel, or JSON.&lt;/p&gt;

&lt;p&gt;This run returned 462 listings in about 25 seconds. The tool costs $1.50 per 1,000 listings, so this article's data cost less than one dollar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cleaning steps that matter
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Filter to the right category (&lt;code&gt;category = Consoles&lt;/code&gt; here).&lt;/li&gt;
&lt;li&gt;Drop titles with "box only", "case", "for parts", "won't charge".&lt;/li&gt;
&lt;li&gt;Set a price floor that removes accessories (I used $90 for the OLED, $35 for the Lite).&lt;/li&gt;
&lt;li&gt;Split by condition before taking a median. Mixing "Poor" and "Like new" hides the number you need.&lt;/li&gt;
&lt;li&gt;Use the median, not the average. One bundle with ten games moves the average a lot.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Limits to know about
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mercari does not show the sale date. The tool sorts by most recently sold and gives you the listing date.&lt;/li&gt;
&lt;li&gt;Mercari returns at most about 1,000 results per search. Narrow searches give cleaner data anyway.&lt;/li&gt;
&lt;li&gt;Prices are item prices. Shipping is not included.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you run it on a category you know well and something looks wrong, tell me. I fix reported problems quickly.&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>datascience</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
