<?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: Bruno Aguilera</title>
    <description>The latest articles on DEV Community by Bruno Aguilera (@bruno_aguilera_6c208c01ea).</description>
    <link>https://dev.to/bruno_aguilera_6c208c01ea</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%2F4229077%2F40e93c4a-c02a-4cde-bdb8-9936ea78bb69.png</url>
      <title>DEV Community: Bruno Aguilera</title>
      <link>https://dev.to/bruno_aguilera_6c208c01ea</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bruno_aguilera_6c208c01ea"/>
    <language>en</language>
    <item>
      <title>Where salaries show up in Google Jobs: a 6-market snapshot (and why Singapore stands out)</title>
      <dc:creator>Bruno Aguilera</dc:creator>
      <pubDate>Thu, 05 Nov 2026 17:55:32 +0000</pubDate>
      <link>https://dev.to/bruno_aguilera_6c208c01ea/where-salaries-show-up-in-google-jobs-a-6-market-snapshot-and-why-singapore-stands-out-5831</link>
      <guid>https://dev.to/bruno_aguilera_6c208c01ea/where-salaries-show-up-in-google-jobs-a-6-market-snapshot-and-why-singapore-stands-out-5831</guid>
      <description>&lt;p&gt;&lt;em&gt;Data pulled on 23 Oct 2026. 240 listings, 6 countries, 4 roles. Method, code and CSV at the end.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Singapore is the surprise.&lt;/strong&gt; 17 of 40 Google Jobs listings (42.5%) showed a salary, the highest of the six markets. A study of 5.7 million postings on employer career sites found only 10% of Singapore postings showed pay in Feb–Apr 2026.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The US and Canada go the other way.&lt;/strong&gt; Career sites show pay in about 6 of 10 postings there, but only 8 of 40 (20%) Google Jobs listings did in each country.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pay shows up by role.&lt;/strong&gt; Registered nurse listings showed pay 42% of the time, accountants and data analysts 27%, software engineers 12%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One listing, many doors.&lt;/strong&gt; A single Google Jobs listing links to between 2.6 (Singapore) and 5.0 (US) places to apply, so the list of apply links is a map of where jobs actually live.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why look at Google Jobs
&lt;/h2&gt;

&lt;p&gt;Google Jobs is a layer, not a destination. It gathers postings from employer sites and job boards and shows each one with every place you can apply. Huntr's 2026 analysis of its users' saved jobs makes the same point: it has no saves of its own because saves are credited to the site hosting each posting.&lt;/p&gt;

&lt;p&gt;That makes it a useful lens for two questions: which portals actually carry the jobs in each country, and how much pay information survives on the way to the job seeker.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we found
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Pay disclosure: Singapore leads, the US and Canada trail
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Market&lt;/th&gt;
&lt;th&gt;Listings with pay&lt;/th&gt;
&lt;th&gt;Share&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Singapore&lt;/td&gt;
&lt;td&gt;17 / 40&lt;/td&gt;
&lt;td&gt;42.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;United Kingdom&lt;/td&gt;
&lt;td&gt;15 / 40&lt;/td&gt;
&lt;td&gt;37.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UAE&lt;/td&gt;
&lt;td&gt;11 / 40&lt;/td&gt;
&lt;td&gt;27.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;United States&lt;/td&gt;
&lt;td&gt;8 / 40&lt;/td&gt;
&lt;td&gt;20.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Canada&lt;/td&gt;
&lt;td&gt;8 / 40&lt;/td&gt;
&lt;td&gt;20.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;India&lt;/td&gt;
&lt;td&gt;5 / 40&lt;/td&gt;
&lt;td&gt;12.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;All markets&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;64 / 240&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;26.7%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Our sample is small, so read the gaps, not the decimals. And the comparison with the career-site study (grey bars) is indicative only: different method, different months, different populations.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Why Singapore? A lead worth checking
&lt;/h3&gt;

&lt;p&gt;In Singapore, 9 of the 11 listings that offered MyCareersFuture as an apply link showed pay, against 8 of the other 29. For the 8 listings where MyCareersFuture was the first source Google named, all 8 showed a salary.&lt;/p&gt;

&lt;p&gt;That fits the rules for the government portal. Singapore's Ministry of Manpower says that when an employer uses a MyCareersFuture ad to support an Employment Pass application, the salary must be "clear, specific, and consistent", visible to all candidates, and the maximum can be no more than twice the minimum.&lt;/p&gt;

&lt;p&gt;We can't prove the rule is the cause: the sample is small and many listings on that portal are not for Employment Pass roles. But it is a testable explanation, and it points to something general: &lt;strong&gt;where a portal requires a salary range, Google Jobs carries it&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Pay depends on the job, not just the country
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Role (across all 6 markets)&lt;/th&gt;
&lt;th&gt;Listings with pay&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Registered Nurse&lt;/td&gt;
&lt;td&gt;25 / 60 (41.7%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Accountant&lt;/td&gt;
&lt;td&gt;16 / 60 (26.7%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data Analyst&lt;/td&gt;
&lt;td&gt;16 / 60 (26.7%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Software Engineer&lt;/td&gt;
&lt;td&gt;7 / 60 (11.7%)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Software engineering, the most searched role of the four, was the least likely to show a number.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Where the jobs live
&lt;/h3&gt;

&lt;p&gt;Counting listings that offer at least one apply link on each portal (out of 40):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;United States:&lt;/strong&gt; LinkedIn 15, Monster 12, ZipRecruiter 12, Indeed 10, SimplyHired 10&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Canada:&lt;/strong&gt; LinkedIn 21, Workopolis 10, Indeed 10&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;United Kingdom:&lt;/strong&gt; LinkedIn 18, Indeed 5, JobLeads 5&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;India:&lt;/strong&gt; LinkedIn 17, Glassdoor 12, Shine 5, Foundit 5&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UAE:&lt;/strong&gt; Trabajo.org 12, JobLeads 9, LinkedIn 6, Naukrigulf 4&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Singapore:&lt;/strong&gt; MyCareersFuture 11, JobLeads 10, JobStreet 10, Trabajo.org 9, LinkedIn 6&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;LinkedIn is the most common apply link in the US, Canada, the UK and India. In Singapore and the UAE it is not: local and aggregator portals lead. For a Singapore job board or recruiter, that matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you can do with this
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Job boards and aggregators:&lt;/strong&gt; check which portals feed Google Jobs in your market and where your listings are missing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Salary benchmarking:&lt;/strong&gt; know that pay is present in only about a quarter of listings overall, so plan for sparse data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recruiters and employers:&lt;/strong&gt; if you want your role to carry a salary into Google Jobs, post it where a salary range is required or shown.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Researchers:&lt;/strong&gt; repeat this monthly. A series would show whether pay-transparency rules move the numbers.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Small sample:&lt;/strong&gt; 10 listings per role per country, one day. It shows where to look, not a statistically representative measure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google decides what to show:&lt;/strong&gt; a missing salary can mean the employer didn't publish one, or Google didn't pick it up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Salary strings are not always clean.&lt;/strong&gt; One Singapore listing came back as "$90–$150 a month", which looks like an hourly rate. That is why we report shares, not average salaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Different comparison sources:&lt;/strong&gt; the career-site figures come from another study with its own method.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reproduce it
&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;from&lt;/span&gt; &lt;span class="n"&gt;apify_client&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ApifyClient&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ApifyClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;APIFY_TOKEN&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;actor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sondalabs/google-jobs-scraper&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;run_input&lt;/span&gt;&lt;span class="o"&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;queries&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&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;Software Engineer&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;Data Analyst&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;Accountant&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;Registered Nurse&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;country&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;sg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;            &lt;span class="c1"&gt;# also: us, gb, in, ae, ca
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;language&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;en&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;postedWithin&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;month&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;maxJobsPerSearch&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;outputFormat&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;normalized&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="n"&gt;jobs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dataset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;defaultDatasetId&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]).&lt;/span&gt;&lt;span class="nf"&gt;iterate_items&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;j&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;job&lt;/span&gt;&lt;span class="sh"&gt;"&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="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;jobs&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;j&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;salary&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;jobs&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Google returned about 10 listings per search, so each country run delivered 40. The six runs cost under $0.60 in total. The raw data for all 240 listings is in the CSV that goes with this article.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build the Google Jobs Scraper used here. The numbers come from its output and can be checked with the code above.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fantastic.jobs, &lt;a href="https://fantastic.jobs/article/salary-transparency" rel="noopener noreferrer"&gt;Global Salary Transparency in Job Postings 2026&lt;/a&gt; (5.7M+ postings, Feb–Apr 2026)&lt;/li&gt;
&lt;li&gt;Singapore Ministry of Manpower, &lt;a href="https://www.mom.gov.sg/passes-and-permits/employment-pass/consider-all-candidates-fairly" rel="noopener noreferrer"&gt;Consider all candidates fairly&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Huntr, &lt;a href="https://huntr.co/blog/job-search-sites" rel="noopener noreferrer"&gt;Job search sites job seekers actually use in 2026&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Jobcube, &lt;a href="https://jobcube.com/blog/entry/2025/02/14/220445" rel="noopener noreferrer"&gt;Analysis of job portal usage trends in Singapore&lt;/a&gt; (survey of 202 respondents, Dec 2024: JobStreet, LinkedIn and Indeed lead)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webscraping</category>
      <category>data</category>
      <category>python</category>
      <category>api</category>
    </item>
    <item>
      <title>Wireless earbuds on four Amazons: Japan rates about half a star lower, Mexico shows the biggest discounts</title>
      <dc:creator>Bruno Aguilera</dc:creator>
      <pubDate>Thu, 05 Nov 2026 17:47:46 +0000</pubDate>
      <link>https://dev.to/bruno_aguilera_6c208c01ea/wireless-earbuds-on-four-amazons-japan-rates-about-half-a-star-lower-mexico-shows-the-biggest-4114</link>
      <guid>https://dev.to/bruno_aguilera_6c208c01ea/wireless-earbuds-on-four-amazons-japan-rates-about-half-a-star-lower-mexico-shows-the-biggest-4114</guid>
      <description>&lt;p&gt;&lt;em&gt;Search results from amazon.com, amazon.com.mx, amazon.com.br and amazon.co.jp on 23 Oct 2026. 151 products. Method, code and CSV at the end.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ratings are not comparable across countries.&lt;/strong&gt; The median star rating of the first results was 4.0 in Japan, against 4.4 in the US, 4.5 in Mexico and 4.55 in Brazil. In Japan 19 of 40 results were under 4.0 stars. In the US, 0 of 31.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mexico leans hardest on "was" prices.&lt;/strong&gt; 36 of 40 results (90%) showed a list price, with a median 39% off. In Japan, 17 of 40 (42.5%) showed one, with a median 19% off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review counts differ by an order of magnitude.&lt;/strong&gt; The median product had 5,301 ratings in the US and about 570 in Japan and Brazil.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Brazil and Japan have the most thinly reviewed products.&lt;/strong&gt; 13 of 40 results in Brazil and 9 of 40 in Japan had fewer than 100 ratings.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What we looked at
&lt;/h2&gt;

&lt;p&gt;One search per marketplace, in the local language, for wireless earbuds: "wireless earbuds" (US), "audífonos inalámbricos" (Mexico), "fones de ouvido bluetooth" (Brazil) and "ワイヤレスイヤホン" (Japan). We kept the first results of each search: 31 in the US, 40 in each of the other three.&lt;/p&gt;

&lt;p&gt;For every product we collected the price, list price, star rating and number of ratings, all as numbers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we found
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. A product that is "good" depends on the country
&lt;/h3&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;US&lt;/th&gt;
&lt;th&gt;Mexico&lt;/th&gt;
&lt;th&gt;Brazil&lt;/th&gt;
&lt;th&gt;Japan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Median stars&lt;/td&gt;
&lt;td&gt;4.4&lt;/td&gt;
&lt;td&gt;4.5&lt;/td&gt;
&lt;td&gt;4.55&lt;/td&gt;
&lt;td&gt;4.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rated 4.5 or more&lt;/td&gt;
&lt;td&gt;11 / 31&lt;/td&gt;
&lt;td&gt;26 / 40&lt;/td&gt;
&lt;td&gt;23 / 38&lt;/td&gt;
&lt;td&gt;2 / 40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rated under 4.0&lt;/td&gt;
&lt;td&gt;0 / 31&lt;/td&gt;
&lt;td&gt;1 / 40&lt;/td&gt;
&lt;td&gt;3 / 38&lt;/td&gt;
&lt;td&gt;19 / 40&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Brazil: two results had no rating yet.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The gap is large and the data can't say why. Different rating habits between countries, a different product mix in each search, and the language of the query could all play a part. What it does say: &lt;strong&gt;if you compare products or sellers across Amazon marketplaces, a 4.2 in Japan and a 4.6 in Mexico may mean the same thing.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. How much reviewing a product gets
&lt;/h3&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;US&lt;/th&gt;
&lt;th&gt;Mexico&lt;/th&gt;
&lt;th&gt;Brazil&lt;/th&gt;
&lt;th&gt;Japan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Median number of ratings&lt;/td&gt;
&lt;td&gt;5,301&lt;/td&gt;
&lt;td&gt;2,456&lt;/td&gt;
&lt;td&gt;579&lt;/td&gt;
&lt;td&gt;567&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Results with 10,000+ ratings&lt;/td&gt;
&lt;td&gt;13 / 31&lt;/td&gt;
&lt;td&gt;12 / 40&lt;/td&gt;
&lt;td&gt;4 / 40&lt;/td&gt;
&lt;td&gt;2 / 40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Results with under 100 ratings&lt;/td&gt;
&lt;td&gt;6 / 31&lt;/td&gt;
&lt;td&gt;4 / 40&lt;/td&gt;
&lt;td&gt;13 / 40&lt;/td&gt;
&lt;td&gt;9 / 40&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  3. List prices and discounts
&lt;/h3&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;US&lt;/th&gt;
&lt;th&gt;Mexico&lt;/th&gt;
&lt;th&gt;Brazil&lt;/th&gt;
&lt;th&gt;Japan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Results showing a list price&lt;/td&gt;
&lt;td&gt;21 / 31&lt;/td&gt;
&lt;td&gt;36 / 40&lt;/td&gt;
&lt;td&gt;29 / 40&lt;/td&gt;
&lt;td&gt;17 / 40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Median discount vs list price&lt;/td&gt;
&lt;td&gt;37.5%&lt;/td&gt;
&lt;td&gt;39.2%&lt;/td&gt;
&lt;td&gt;23.7%&lt;/td&gt;
&lt;td&gt;18.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The "discount" is relative to the list price Amazon displays, which is not necessarily a price the product was ever sold at.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Price spread inside each market
&lt;/h3&gt;

&lt;p&gt;Prices are in local currencies, so we compare the spread, not the amounts: the 90th percentile price divided by the 10th.&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;US&lt;/th&gt;
&lt;th&gt;Mexico&lt;/th&gt;
&lt;th&gt;Brazil&lt;/th&gt;
&lt;th&gt;Japan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Median price&lt;/td&gt;
&lt;td&gt;$23.98&lt;/td&gt;
&lt;td&gt;MX$488.99&lt;/td&gt;
&lt;td&gt;R$73.11&lt;/td&gt;
&lt;td&gt;¥4,055&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;90th ÷ 10th percentile price&lt;/td&gt;
&lt;td&gt;7.1×&lt;/td&gt;
&lt;td&gt;10.1×&lt;/td&gt;
&lt;td&gt;9.2×&lt;/td&gt;
&lt;td&gt;5.7×&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Mexico and Brazil have the widest range from cheap to premium in the first results. Japan's is the narrowest.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you can do with this
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sellers expanding to a new marketplace:&lt;/strong&gt; benchmark your rating against that market's median, not your home market's.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Price and promotion analysts:&lt;/strong&gt; track the share of results with a list price and the median discount over time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Brand and category managers:&lt;/strong&gt; see how crowded the "thin reviews" long tail is in each country.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anyone building a cross-market comparison:&lt;/strong&gt; normalize ratings per marketplace before ranking.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Small sample:&lt;/strong&gt; about 40 results, one keyword per country, one day. It shows where to look, not a statistically representative measure of Amazon.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Different queries, different products.&lt;/strong&gt; The same product category, searched in four languages, doesn't return the same items.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search order is Amazon's own.&lt;/strong&gt; We kept results in the order Amazon returned them, with no manual filtering.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;United States:&lt;/strong&gt; the run returned 31 results, not 40.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sponsored placements&lt;/strong&gt; are not analyzed here.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reproduce it
&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;from&lt;/span&gt; &lt;span class="n"&gt;apify_client&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ApifyClient&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ApifyClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;APIFY_TOKEN&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;markets&lt;/span&gt; &lt;span class="o"&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;amazon.com&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;wireless earbuds&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;amazon.com.mx&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;audífonos inalámbricos&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;amazon.com.br&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;fones de ouvido bluetooth&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;amazon.co.jp&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;ワイヤレスイヤホン&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&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;marketplace&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;term&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;markets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;actor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sondalabs/amazon-scraper&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;run_input&lt;/span&gt;&lt;span class="o"&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;mode&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;search&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;searchTerms&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;term&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;marketplace&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;marketplace&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;maxItemsPerStart&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;maxItems&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="n"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&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;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dataset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;defaultDatasetId&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]).&lt;/span&gt;&lt;span class="nf"&gt;iterate_items&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
             &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;product&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;stars&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sorted&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;stars&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="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;stars&lt;/span&gt;&lt;span class="sh"&gt;"&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;marketplace&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;median stars:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stars&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;stars&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The four runs returned 151 products and cost about $0.25 in total. The raw data is in the CSV that goes with this article.&lt;/p&gt;

&lt;p&gt;The scraper reads public pages only. It does not sign in and does not solve CAPTCHAs. Check Amazon's terms and the law in your country before using data like this commercially.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build the Amazon Scraper used here. You can check every number with the code above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>data</category>
      <category>python</category>
      <category>api</category>
    </item>
    <item>
      <title>A year of Google searches for 7 AI chatbots: ChatGPT's share fell from 67% to 54%, and Claude's interest more than tripled</title>
      <dc:creator>Bruno Aguilera</dc:creator>
      <pubDate>Thu, 05 Nov 2026 17:44:48 +0000</pubDate>
      <link>https://dev.to/bruno_aguilera_6c208c01ea/a-year-of-google-searches-for-7-ai-chatbots-chatgpts-share-fell-from-67-to-54-and-claudes-3f2i</link>
      <guid>https://dev.to/bruno_aguilera_6c208c01ea/a-year-of-google-searches-for-7-ai-chatbots-chatgpts-share-fell-from-67-to-54-and-claudes-3f2i</guid>
      <description>&lt;p&gt;&lt;em&gt;US web searches, 19 Oct 2025 – 11 Oct 2026, weekly. Seven keywords on one scale. Method and code at the end.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT is still far ahead, but its lead is shrinking.&lt;/strong&gt; Across the seven chatbots, ChatGPT took 66.7% of the search interest in the first 8 weeks of the year and 54.0% in the last 8.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude's search interest more than tripled.&lt;/strong&gt; Its weekly average went from 6.2 to 20.4 (on a scale where ChatGPT's peak week is 100). Its share of the seven went from 4.7% to 14.4%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude overtook Gemini in three weeks&lt;/strong&gt;: 24 May 2026 (33 vs 32), 28 Jun (27 vs 26) and 5 Jul (28 vs 25).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini grew steadily.&lt;/strong&gt; Average interest rose from 22.4 to 32.9, and its share from 17.0% to 23.3%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The rest faded.&lt;/strong&gt; Perplexity fell from 3.1 to 1.0 and DeepSeek from 2.0 to 1.5. Copilot and Grok stayed roughly flat.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why this is hard to do in Google Trends
&lt;/h2&gt;

&lt;p&gt;Google Trends only lets you compare 5 terms at once, and each comparison is scaled to its own peak. To put seven chatbots on the same 0–100 scale, you need to split them into batches that share a common keyword and rescale every batch against it. That is tedious by hand and easy to get wrong.&lt;/p&gt;

&lt;p&gt;For this piece the batching and rescaling were automated (details below), and every row is flagged as rescaled, so you always know the numbers are an anchored estimate and not raw Google values.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the year looks like
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. ChatGPT: dominant, with a falling share
&lt;/h3&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;First 8 weeks&lt;/th&gt;
&lt;th&gt;Last 8 weeks&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ChatGPT&lt;/td&gt;
&lt;td&gt;66.7%&lt;/td&gt;
&lt;td&gt;54.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini&lt;/td&gt;
&lt;td&gt;17.0%&lt;/td&gt;
&lt;td&gt;23.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude&lt;/td&gt;
&lt;td&gt;4.7%&lt;/td&gt;
&lt;td&gt;14.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Copilot&lt;/td&gt;
&lt;td&gt;4.6%&lt;/td&gt;
&lt;td&gt;3.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Grok&lt;/td&gt;
&lt;td&gt;3.1%&lt;/td&gt;
&lt;td&gt;2.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Perplexity&lt;/td&gt;
&lt;td&gt;2.4%&lt;/td&gt;
&lt;td&gt;0.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;td&gt;1.5%&lt;/td&gt;
&lt;td&gt;1.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Share of the combined search interest of the seven keywords. Weeks: 19 Oct–7 Dec 2025 vs 23 Aug–11 Oct 2026.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;ChatGPT's own interest did not collapse: it averaged 76 over the year, and was 76 in the last 8 weeks against 88 in the first 8. What changed is that the others grew while it moved sideways.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Claude: the biggest mover
&lt;/h3&gt;

&lt;p&gt;Claude's line is flat near 6 until January, passes 15 in the week of 1 Feb 2026, and peaks at 33 in the week of 24 May. It then settled around 20 and has been climbing again in the last weeks, to 23.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Gemini: slow and steady
&lt;/h3&gt;

&lt;p&gt;Gemini sits between 19 and 35 all year. It reached 35 in April and again in late September and early October.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. The long tail
&lt;/h3&gt;

&lt;p&gt;Perplexity's interest is 1 in the last 8 weeks and DeepSeek's about 1–2. With values this small, a one-point change is within the noise of Google's rounding, so we would not over-read those two.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the data can't tell you
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Search interest is not usage.&lt;/strong&gt; People reach chatbots through apps, bookmarks and browser bars. A search is only one of the ways to get there.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Some of these words mean other things.&lt;/strong&gt; "Claude" is also a first name, "Gemini" a zodiac sign, "Copilot" a common word and "Grok" a verb. That inflates those numbers by an unknown amount.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;US only, web search only.&lt;/strong&gt; Other countries and YouTube or News search may look different.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rounded integers.&lt;/strong&gt; Google reports whole numbers, so small values are coarse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rescaled data.&lt;/strong&gt; Values on the 0–100 scale come from batches linked by an anchor keyword, so differences of a point or two are not meaningful.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What you can do with this
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Marketing and SEO teams:&lt;/strong&gt; track brand vs competitors in one chart, weekly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analysts and investors:&lt;/strong&gt; use search interest as one signal of attention for AI products, next to downloads and revenue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Journalists:&lt;/strong&gt; check a claim like "X is overtaking Y" against a year of data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anyone with a keyword list longer than five.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reproduce it
&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;from&lt;/span&gt; &lt;span class="n"&gt;apify_client&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ApifyClient&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ApifyClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;APIFY_TOKEN&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;actor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sondalabs/google-trends-scraper&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;run_input&lt;/span&gt;&lt;span class="o"&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;keywords&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&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;ChatGPT&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;Gemini&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;Claude&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;Copilot&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;Perplexity&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;Grok&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;DeepSeek&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;geo&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;US&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;timeframe&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;today 12-m&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;dataTypes&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&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;interest_over_time&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dataset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;defaultDatasetId&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]).&lt;/span&gt;&lt;span class="nf"&gt;list_items&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;interest_over_time&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;isPartial&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt;
&lt;span class="n"&gt;wide&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pivot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;columns&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;keyword&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;values&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;value&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;share&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;wide&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;:].&lt;/span&gt;&lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;wide&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;:].&lt;/span&gt;&lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;sum&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;share&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The run returned 371 rows (7 keywords × 53 weeks, including the last partial week, which we left out of every figure above). It cost under $0.20.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build the Google Trends Scraper used here. You can check every number with the code above.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Source
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Google Trends via &lt;a href="https://apify.com/sondalabs/google-trends-scraper" rel="noopener noreferrer"&gt;Google Trends Scraper&lt;/a&gt;, run on 22 Oct 2026, US, web search, weekly, &lt;code&gt;today 12-m&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webscraping</category>
      <category>data</category>
      <category>python</category>
      <category>api</category>
    </item>
  </channel>
</rss>
