<?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: Shrivardhan Hulswar</title>
    <description>The latest articles on DEV Community by Shrivardhan Hulswar (@veridata).</description>
    <link>https://dev.to/veridata</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%2F4211696%2Fe9db6a14-fd28-49a9-b4ab-efb56b22602c.jpg</url>
      <title>DEV Community: Shrivardhan Hulswar</title>
      <link>https://dev.to/veridata</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/veridata"/>
    <language>en</language>
    <item>
      <title>How to Compare More Than 5 Keywords in Google Trends (and Get YoY Growth for Each)</title>
      <dc:creator>Shrivardhan Hulswar</dc:creator>
      <pubDate>Wed, 28 Oct 2026 12:28:11 +0000</pubDate>
      <link>https://dev.to/veridata/how-to-compare-more-than-5-keywords-in-google-trends-and-get-yoy-growth-for-each-19g8</link>
      <guid>https://dev.to/veridata/how-to-compare-more-than-5-keywords-in-google-trends-and-get-yoy-growth-for-each-19g8</guid>
      <description>&lt;p&gt;Google Trends only lets you compare &lt;strong&gt;5 search terms at a time&lt;/strong&gt;, and every comparison is rescaled to its own 0-100 range. So if you have a list of 50 product ideas or blog topics, you can't just compare them in groups of five: a "60" in one group means something different from a "60" in another.&lt;/p&gt;

&lt;p&gt;Here's how to get &lt;strong&gt;any number of keywords onto one comparable scale&lt;/strong&gt;, plus growth numbers (year-over-year change, momentum, seasonality) you can sort by, without writing any code.&lt;/p&gt;

&lt;h2&gt;
  
  
  The trick: chain comparisons through a shared reference
&lt;/h2&gt;

&lt;p&gt;Google Trends values are relative. In any comparison, the most-searched term in the period gets 100 at its peak and everything else is scaled against it. To compare more than 5 terms:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Compare a reference keyword with 4 new keywords.&lt;/li&gt;
&lt;li&gt;Record each keyword's average interest &lt;strong&gt;relative to the reference&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Make the biggest keyword so far the new reference, and compare it with the next 4.&lt;/li&gt;
&lt;li&gt;Multiply the ratios along the chain, so every keyword ends up relative to the same top keyword.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Using the biggest keyword as the reference keeps the numbers above Google's rounding for as long as possible. Google rounds very small values to 0, so a term under about 1% of the reference reads as 0.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real example: coffee vs tea vs 5 trendier drinks (US, past 5 years)
&lt;/h2&gt;

&lt;p&gt;I ran 7 drink keywords through the &lt;a href="https://apify.com/veridata/google-trends-scraper" rel="noopener noreferrer"&gt;Google Trends Scraper&lt;/a&gt; on Apify. Data pulled on 28 October 2026:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Keyword&lt;/th&gt;
&lt;th&gt;Popularity (coffee = 100)&lt;/th&gt;
&lt;th&gt;YoY change&lt;/th&gt;
&lt;th&gt;Trend&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;coffee&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;+9.6%&lt;/td&gt;
&lt;td&gt;rising&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tea&lt;/td&gt;
&lt;td&gt;54.73&lt;/td&gt;
&lt;td&gt;-2.8%&lt;/td&gt;
&lt;td&gt;rising&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;espresso&lt;/td&gt;
&lt;td&gt;10.66&lt;/td&gt;
&lt;td&gt;+17.1%&lt;/td&gt;
&lt;td&gt;rising&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;matcha&lt;/td&gt;
&lt;td&gt;6.14&lt;/td&gt;
&lt;td&gt;+10.0%&lt;/td&gt;
&lt;td&gt;rising&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;chai&lt;/td&gt;
&lt;td&gt;4.08&lt;/td&gt;
&lt;td&gt;+5.4%&lt;/td&gt;
&lt;td&gt;rising&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kombucha&lt;/td&gt;
&lt;td&gt;1.74&lt;/td&gt;
&lt;td&gt;-14.0%&lt;/td&gt;
&lt;td&gt;stable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;yerba mate&lt;/td&gt;
&lt;td&gt;0.29&lt;/td&gt;
&lt;td&gt;-13.3%&lt;/td&gt;
&lt;td&gt;rising&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;To check the chaining, I compared coffee, tea, espresso, matcha and kombucha directly in one native Google comparison. The ratios were identical: tea 54.73, espresso 10.66, matcha 6.14, kombucha 1.74.&lt;/p&gt;

&lt;p&gt;What the numbers say:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Matcha is about 6% of coffee's search interest&lt;/strong&gt; in the US but still growing year over year, with a seasonal peak in August.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kombucha and yerba mate are shrinking year over year.&lt;/strong&gt; Yerba mate is "rising" over the full 5 years (the fitted line slopes up) while falling over the last 12 months. That's worth knowing before you build a product around it.&lt;/li&gt;
&lt;li&gt;Breakout searches (Google's label for growth above 5000%) for matcha included specific brand names. Those are often the earliest signal of a new competitor.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The metrics, and how they're calculated
&lt;/h2&gt;

&lt;p&gt;Each keyword gets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;relativePopularity&lt;/code&gt; and &lt;code&gt;popularityRank&lt;/code&gt; on the shared scale&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;yearOverYearChangePct&lt;/code&gt;: the latest 4 data points vs the same points one year earlier (needs a period longer than 12 months)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;recentChangePct&lt;/code&gt;: the latest quarter of the period vs the quarter before it&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;trendDirection&lt;/code&gt;: a least-squares line over the whole period; a total fitted change above +15% is "rising", below -15% is "falling"&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;peakMonth&lt;/code&gt;: the calendar month with the highest average interest (periods of 2+ years)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;topRegions&lt;/code&gt;, &lt;code&gt;relatedQueriesTop&lt;/code&gt;, &lt;code&gt;relatedQueriesRising&lt;/code&gt; and &lt;code&gt;breakoutQueries&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;the full &lt;code&gt;timeline&lt;/code&gt;, with each point also on the common scale&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to run it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://apify.com/veridata/google-trends-scraper" rel="noopener noreferrer"&gt;Google Trends Scraper&lt;/a&gt; on Apify.&lt;/li&gt;
&lt;li&gt;Paste your keywords, one per line. There's no 5-term limit.&lt;/li&gt;
&lt;li&gt;Pick a country code (&lt;code&gt;US&lt;/code&gt;, &lt;code&gt;IN&lt;/code&gt;, &lt;code&gt;ES&lt;/code&gt;, or a region like &lt;code&gt;US-CA&lt;/code&gt;) or leave it empty for worldwide, then pick a time range.&lt;/li&gt;
&lt;li&gt;Export to CSV, Excel or JSON, or send the results to Google Sheets, Make, Zapier or n8n.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can also add country codes under &lt;strong&gt;Trending now&lt;/strong&gt; to get today's trending searches with approximate traffic and linked news articles.&lt;/p&gt;

&lt;p&gt;It's pay per keyword report with data. Keywords with too little search volume are not charged.&lt;/p&gt;

&lt;h2&gt;
  
  
  Caveats
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Trends values are &lt;strong&gt;relative&lt;/strong&gt;, not absolute search counts. "6% of coffee" is a ratio, not a number of searches.&lt;/li&gt;
&lt;li&gt;Chaining keeps precision best when the keywords are within about two orders of magnitude of each other. Very small terms next to a giant reference round to 0.&lt;/li&gt;
&lt;li&gt;Google adjusts its data collection from time to time, so compare like with like: same country, same period.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I built this Apify actor. The data in the table comes from a real run on the date shown.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>datascience</category>
      <category>marketing</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Extract Emails, Phone Numbers and Social Links from a List of Company Websites</title>
      <dc:creator>Shrivardhan Hulswar</dc:creator>
      <pubDate>Wed, 28 Oct 2026 11:19:02 +0000</pubDate>
      <link>https://dev.to/veridata/how-to-extract-emails-phone-numbers-and-social-links-from-a-list-of-company-websites-19eo</link>
      <guid>https://dev.to/veridata/how-to-extract-emails-phone-numbers-and-social-links-from-a-list-of-company-websites-19eo</guid>
      <description>&lt;p&gt;You have a list of company websites, from a Google Maps export, a trade-show list or a CRM, and you need the contact details behind them: emails, phone numbers, LinkedIn and other social profiles. Opening each site by hand takes a few minutes per company. For 500 companies that's days.&lt;/p&gt;

&lt;p&gt;Here's how to do it in bulk, and what makes the difference between clean results and a spreadsheet full of junk.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where contact details actually live on a website
&lt;/h2&gt;

&lt;p&gt;Most companies don't put everything on the homepage. Contact details are spread across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the &lt;strong&gt;contact page&lt;/strong&gt; (&lt;code&gt;/contact&lt;/code&gt;, &lt;code&gt;/contact-us&lt;/code&gt;, &lt;code&gt;/get-in-touch&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;the &lt;strong&gt;about&lt;/strong&gt; and &lt;strong&gt;team&lt;/strong&gt; pages&lt;/li&gt;
&lt;li&gt;the &lt;strong&gt;imprint / legal notice&lt;/strong&gt; page, which is legally required in Germany and Austria (&lt;code&gt;/impressum&lt;/code&gt;) and common across the EU (&lt;code&gt;/mentions-legales&lt;/code&gt;, &lt;code&gt;/aviso-legal&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;the &lt;strong&gt;footer&lt;/strong&gt;, which usually holds the social links&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So a useful extractor has to find those pages, in several languages, not just read the homepage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why naive scraping gives bad results
&lt;/h2&gt;

&lt;p&gt;If you just run an email regex over HTML, you get garbage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Image file names&lt;/strong&gt; that look like emails: &lt;code&gt;logo@2x.png&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Placeholder addresses&lt;/strong&gt; from forms and templates: &lt;code&gt;name@example.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tracking and error-reporting addresses&lt;/strong&gt; buried in scripts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prose mistaken for emails&lt;/strong&gt;: "our office is located at &lt;a href="http://www.company.com" rel="noopener noreferrer"&gt;www.company.com&lt;/a&gt;" turned into &lt;code&gt;located@www.company.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share buttons&lt;/strong&gt; counted as social profiles: &lt;code&gt;facebook.com/sharer/...&lt;/code&gt;, &lt;code&gt;twitter.com/intent/tweet&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The same profile twice: &lt;code&gt;linkedin.com/company/acme&lt;/code&gt; and &lt;code&gt;www.linkedin.com/company/acme&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And you miss real addresses that sites hide on purpose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare email protection&lt;/strong&gt;, which replaces emails with an encoded string that only a browser script decodes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simple obfuscation&lt;/strong&gt; like &lt;code&gt;sales [at] acme [dot] com&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Doing it in bulk
&lt;/h2&gt;

&lt;p&gt;I built a tool for this: the &lt;strong&gt;&lt;a href="https://apify.com/veridata/website-contact-extractor" rel="noopener noreferrer"&gt;Website Contact Extractor on Apify&lt;/a&gt;&lt;/strong&gt;. You paste a list of websites or bare domains, and for each one it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;loads the homepage&lt;/li&gt;
&lt;li&gt;finds the most likely contact, about, imprint and team pages (English, German, Spanish, French, Italian and Portuguese)&lt;/li&gt;
&lt;li&gt;extracts emails, phone numbers and social profiles from all of them&lt;/li&gt;
&lt;li&gt;cleans and deduplicates the results&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You get one row per company:&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;"domain"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"acme-corp.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"companyName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Acme Corp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"emails"&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;"hello@acme-corp.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sales@acme-corp.com"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"phones"&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;"+34931234567"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"socials"&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;"linkedin"&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;"https://www.linkedin.com/company/acme-corp"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"instagram"&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;"https://www.instagram.com/acme.corp"&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;"contactPageUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://acme-corp.com/contact"&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;What it handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;emails hidden by Cloudflare protection and &lt;code&gt;[at]&lt;/code&gt; / &lt;code&gt;[dot]&lt;/code&gt; obfuscation are decoded&lt;/li&gt;
&lt;li&gt;image names, placeholders and tracking addresses are filtered out&lt;/li&gt;
&lt;li&gt;phone numbers are validated and formatted in international format (&lt;code&gt;+34931234567&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;LinkedIn, Facebook, Instagram, X, YouTube, TikTok, Pinterest, GitHub, Threads, WhatsApp and Telegram profiles are found, with share buttons removed&lt;/li&gt;
&lt;li&gt;the company's own-domain emails are listed first&lt;/li&gt;
&lt;li&gt;robots.txt is respected by default&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You only pay for websites where contacts were found. Sites with no contact details, or that fail to load, are free.&lt;/p&gt;

&lt;h2&gt;
  
  
  A typical workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Export businesses from Google Maps or your lead list, with the &lt;strong&gt;website&lt;/strong&gt; column.&lt;/li&gt;
&lt;li&gt;Paste the websites into the extractor and run it.&lt;/li&gt;
&lt;li&gt;Export to CSV or Excel, or send the results straight to Google Sheets, HubSpot, Make, Zapier or n8n.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Use the data responsibly
&lt;/h2&gt;

&lt;p&gt;These are contact details that companies publish on their own websites, but how you use them is still regulated. In the EU, the GDPR and national anti-spam rules apply to outreach, even B2B. Check the rules where you operate before emailing anyone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://apify.com/veridata/website-contact-extractor" rel="noopener noreferrer"&gt;Website Contact Extractor: Emails, Phones &amp;amp; Social Links&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What do you use for contact enrichment today? I'd like to hear in the comments.&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>python</category>
      <category>marketing</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Check if ChatGPT Mentions Your Brand (and Track It Automatically)</title>
      <dc:creator>Shrivardhan Hulswar</dc:creator>
      <pubDate>Tue, 27 Oct 2026 20:35:38 +0000</pubDate>
      <link>https://dev.to/veridata/how-to-check-if-chatgpt-mentions-your-brand-and-track-it-automatically-3b08</link>
      <guid>https://dev.to/veridata/how-to-check-if-chatgpt-mentions-your-brand-and-track-it-automatically-3b08</guid>
      <description>&lt;p&gt;More people now ask ChatGPT, Perplexity, Gemini or Claude "what's the best tool for X?" instead of searching Google. If your brand isn't in those answers, you're invisible to that buyer, and your analytics won't show it.&lt;/p&gt;

&lt;p&gt;Here is how to check your &lt;strong&gt;AI search visibility&lt;/strong&gt;, first manually, then automatically across all four engines.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "AI visibility" actually means
&lt;/h2&gt;

&lt;p&gt;When an AI assistant answers a question with web search turned on, three things matter for your brand:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Mention&lt;/strong&gt;: does the answer name your brand at all?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rank&lt;/strong&gt;: if it lists several options, where do you appear relative to competitors?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Citation&lt;/strong&gt;: does it link to &lt;em&gt;your&lt;/em&gt; website as a source, or to a review site, a competitor, or a forum?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Optimizing for these is often called &lt;strong&gt;GEO (generative engine optimization)&lt;/strong&gt; or &lt;strong&gt;AEO (answer engine optimization)&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 1: Check manually
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Write down 10–20 questions your customers actually ask, e.g. "best note-taking app for teams" or "alternatives to [competitor]".&lt;/li&gt;
&lt;li&gt;Ask each question in ChatGPT, Perplexity, Gemini and Claude with web search enabled.&lt;/li&gt;
&lt;li&gt;For each answer, record whether your brand is mentioned, its position versus competitors, and which domains are cited.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This works, but it's slow. Answers also vary from day to day, so a single check tells you little. You need repeated checks to see a trend.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 2: Automate it across all four engines
&lt;/h2&gt;

&lt;p&gt;I built a tool for this: the &lt;strong&gt;&lt;a href="https://apify.com/veridata/ai-visibility-tracker" rel="noopener noreferrer"&gt;AI Visibility Tracker on Apify&lt;/a&gt;&lt;/strong&gt;. You give it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your brand name (plus aliases and your domains)&lt;/li&gt;
&lt;li&gt;your competitors&lt;/li&gt;
&lt;li&gt;the prompts your customers ask&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In one run it queries &lt;strong&gt;ChatGPT, Perplexity, Gemini and Claude&lt;/strong&gt; through their official APIs with web search enabled, and returns for every prompt and engine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;brandMentioned&lt;/code&gt; and &lt;code&gt;brandMentionCount&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;brandRank&lt;/code&gt;: your position among the brands you listed&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;brandCited&lt;/code&gt; and &lt;code&gt;brandCitationPosition&lt;/code&gt;: whether your site is a source&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;competitorsMentioned&lt;/code&gt; and &lt;code&gt;citedDomains&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;the full answer text and the search queries the engine ran&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also saves a &lt;strong&gt;share-of-voice summary&lt;/strong&gt;: mention rate, citation rate and average rank, per engine and overall, plus the most-cited domains.&lt;/p&gt;

&lt;p&gt;You bring your own API keys, so AI usage is billed by each provider directly. Failed checks are never charged.&lt;/p&gt;

&lt;h2&gt;
  
  
  Track it over time
&lt;/h2&gt;

&lt;p&gt;AI answers change, so one snapshot isn't enough. On Apify you can &lt;strong&gt;schedule&lt;/strong&gt; the run daily or weekly and compare the share-of-voice summary across runs. That shows whether your content and PR work is actually moving you into AI answers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do with the results
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Not mentioned at all?&lt;/strong&gt; Look at &lt;code&gt;citedDomains&lt;/code&gt;. Those are the sites the AI trusts for your topic. Getting covered on them (reviews, comparisons, listicles) is usually the fastest way in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mentioned but ranked low?&lt;/strong&gt; Compare how competitors are described in the answer text and close the gap in your own positioning and content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mentioned but never cited?&lt;/strong&gt; Your site lacks pages that answer the question directly. Create them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://apify.com/veridata/ai-visibility-tracker" rel="noopener noreferrer"&gt;AI Visibility Tracker: ChatGPT, Perplexity, Gemini &amp;amp; Claude&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you track AI visibility a different way, I'd like to hear how in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chatgpt</category>
      <category>marketing</category>
      <category>seo</category>
    </item>
  </channel>
</rss>
