<?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: eden</title>
    <description>The latest articles on DEV Community by eden (@ystudio3d).</description>
    <link>https://dev.to/ystudio3d</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%2F4185060%2Fd925f24d-7083-47e9-8f2c-34c7846cb9c7.png</url>
      <title>DEV Community: eden</title>
      <link>https://dev.to/ystudio3d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ystudio3d"/>
    <language>en</language>
    <item>
      <title>What 80 E-Commerce Product Pages Reveal About Structured Data for AI Crawlers (Shopify &amp; WooCommerce)</title>
      <dc:creator>eden</dc:creator>
      <pubDate>Fri, 30 Oct 2026 15:58:12 +0000</pubDate>
      <link>https://dev.to/ystudio3d/what-80-e-commerce-product-pages-reveal-about-structured-data-for-ai-crawlers-shopify--1kma</link>
      <guid>https://dev.to/ystudio3d/what-80-e-commerce-product-pages-reveal-about-structured-data-for-ai-crawlers-shopify--1kma</guid>
      <description>&lt;p&gt;When shoppers ask AI assistants about products—such as price, stock availability, shipping costs, and return windows—those systems rely on a mix of web search indices, page text, and structured data (&lt;code&gt;application/ld+json&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;To see what public technical signals stores actually expose today, we ran an honest HTTP audit across a chosen sample of 100 online stores (99 scored, 1 blocked by firewall, 80 with a readable product page).&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Technical Findings
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Native Platform Files (&lt;code&gt;/llms.txt&lt;/code&gt; and &lt;code&gt;/.well-known/ucp&lt;/code&gt;):&lt;/strong&gt;&lt;br&gt;
Shopify now serves &lt;code&gt;/llms.txt&lt;/code&gt; and &lt;code&gt;/.well-known/ucp&lt;/code&gt; natively across stores. WooCommerce and custom stores do not generate these automatically unless configured.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Product Schema Gap (&lt;code&gt;shippingDetails&lt;/code&gt; &amp;amp; &lt;code&gt;hasMerchantReturnPolicy&lt;/code&gt;):&lt;/strong&gt;&lt;br&gt;
While most themes output basic &lt;code&gt;Offer&lt;/code&gt; fields (&lt;code&gt;price&lt;/code&gt;, &lt;code&gt;priceCurrency&lt;/code&gt;, &lt;code&gt;availability&lt;/code&gt;), policy markup inside &lt;code&gt;Product&lt;/code&gt; JSON-LD was almost always missing in raw HTML:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;78 of 80&lt;/strong&gt; product pages had no &lt;code&gt;shippingDetails&lt;/code&gt; in their structured data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;76 of 80&lt;/strong&gt; product pages had no &lt;code&gt;hasMerchantReturnPolicy&lt;/code&gt; in their structured data.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Important qualifier:&lt;/em&gt; This is a technical check of public structured data on a non-random sample we selected. A missing schema field does not mean a store lacks a shipping or return policy on its website, and structured data alone does not guarantee or predict what any AI assistant will recommend.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try the Free Read-Only Check
&lt;/h3&gt;

&lt;p&gt;I built &lt;strong&gt;CitedCart&lt;/strong&gt; so Shopify and WooCommerce store owners can inspect their own public product and policy markup (read-only, no store login required):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Run a free store check:&lt;/strong&gt; &lt;a href="https://citedcart.com/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=free_start_us&amp;amp;utm_content=schema_study" rel="noopener noreferrer"&gt;https://citedcart.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;View a full sample report (no email required):&lt;/strong&gt; &lt;a href="https://citedcart.com/sample-report.html?lang=en&amp;amp;utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=free_start_us&amp;amp;utm_content=sample_report" rel="noopener noreferrer"&gt;https://citedcart.com/sample-report.html?lang=en&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>shopify</category>
      <category>woocommerce</category>
      <category>seo</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Who's hiring the most in tech this week: SpaceX, Wise, ElevenLabs and OpenAI lead (Oct 15, 2026)</title>
      <dc:creator>eden</dc:creator>
      <pubDate>Thu, 15 Oct 2026 07:39:38 +0000</pubDate>
      <link>https://dev.to/ystudio3d/whos-hiring-the-most-in-tech-this-week-spacex-wise-elevenlabs-and-openai-lead-oct-15-2026-1ooc</link>
      <guid>https://dev.to/ystudio3d/whos-hiring-the-most-in-tech-this-week-spacex-wise-elevenlabs-and-openai-lead-oct-15-2026-1ooc</guid>
      <description>&lt;p&gt;Data pulled on October 15, 2026 (05:22 UTC) straight from the public job boards of 78 well-known tech companies (Greenhouse, Lever, Ashby and others). Together they list &lt;strong&gt;16,045 open jobs&lt;/strong&gt;, and &lt;strong&gt;1,285&lt;/strong&gt; of them were posted or updated in the last 7 days.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who posted the most jobs this week
&lt;/h2&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;Company&lt;/th&gt;
&lt;th&gt;New/updated jobs (7 days)&lt;/th&gt;
&lt;th&gt;Open jobs&lt;/th&gt;
&lt;th&gt;Top department&lt;/th&gt;
&lt;th&gt;Remote&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/spacex" rel="noopener noreferrer"&gt;SpaceX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;141&lt;/td&gt;
&lt;td&gt;2745&lt;/td&gt;
&lt;td&gt;Starlink Enterprise Sales &amp;amp; Account Management&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a href="https://jobs.smartrecruiters.com/wise" rel="noopener noreferrer"&gt;Wise&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;95&lt;/td&gt;
&lt;td&gt;407&lt;/td&gt;
&lt;td&gt;Engineering&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a href="https://jobs.ashbyhq.com/elevenlabs" rel="noopener noreferrer"&gt;ElevenLabs&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;td&gt;147&lt;/td&gt;
&lt;td&gt;Engineering &amp;amp; Product&lt;/td&gt;
&lt;td&gt;129&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;a href="https://jobs.ashbyhq.com/openai" rel="noopener noreferrer"&gt;OpenAI&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;804&lt;/td&gt;
&lt;td&gt;Go To Market&lt;/td&gt;
&lt;td&gt;527&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/stripe" rel="noopener noreferrer"&gt;Stripe&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;td&gt;728&lt;/td&gt;
&lt;td&gt;Account Executives (EMEA)&lt;/td&gt;
&lt;td&gt;114&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;a href="https://jobs.ashbyhq.com/snowflake" rel="noopener noreferrer"&gt;Snowflake&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;td&gt;357&lt;/td&gt;
&lt;td&gt;Engineering&lt;/td&gt;
&lt;td&gt;172&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/databricks" rel="noopener noreferrer"&gt;Databricks&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;44&lt;/td&gt;
&lt;td&gt;891&lt;/td&gt;
&lt;td&gt;Engineering - Pipeline&lt;/td&gt;
&lt;td&gt;71&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/mongodb" rel="noopener noreferrer"&gt;MongoDB&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;42&lt;/td&gt;
&lt;td&gt;401&lt;/td&gt;
&lt;td&gt;Sales Growth EMEA&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/toast" rel="noopener noreferrer"&gt;Toast&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;313&lt;/td&gt;
&lt;td&gt;Sales : Retail Sales AEs&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/cloudflare" rel="noopener noreferrer"&gt;Cloudflare&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;445&lt;/td&gt;
&lt;td&gt;Solution Engineering&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/anthropic" rel="noopener noreferrer"&gt;Anthropic&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;647&lt;/td&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;a href="https://jobs.ashbyhq.com/harvey" rel="noopener noreferrer"&gt;Harvey&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;344&lt;/td&gt;
&lt;td&gt;Go to Market&lt;/td&gt;
&lt;td&gt;275&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/affirm" rel="noopener noreferrer"&gt;Affirm&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;206&lt;/td&gt;
&lt;td&gt;Consumer Engineering&lt;/td&gt;
&lt;td&gt;199&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/elastic" rel="noopener noreferrer"&gt;Elastic&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;382&lt;/td&gt;
&lt;td&gt;Platform - Elasticsearch&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/gitlab" rel="noopener noreferrer"&gt;GitLab&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;215&lt;/td&gt;
&lt;td&gt;Platforms Engineering&lt;/td&gt;
&lt;td&gt;192&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/datadog" rel="noopener noreferrer"&gt;Datadog&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;438&lt;/td&gt;
&lt;td&gt;Enterprise Sales&lt;/td&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/samsara" rel="noopener noreferrer"&gt;Samsara&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;257&lt;/td&gt;
&lt;td&gt;Customer Success&lt;/td&gt;
&lt;td&gt;225&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/twilio" rel="noopener noreferrer"&gt;Twilio&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;141&lt;/td&gt;
&lt;td&gt;Engineering&lt;/td&gt;
&lt;td&gt;141&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/roblox" rel="noopener noreferrer"&gt;Roblox&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;260&lt;/td&gt;
&lt;td&gt;Software Engineering&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/airbnb" rel="noopener noreferrer"&gt;Airbnb&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;164&lt;/td&gt;
&lt;td&gt;Software Engineering&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/verkada" rel="noopener noreferrer"&gt;Verkada&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;315&lt;/td&gt;
&lt;td&gt;Solutions Engineering&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/waymo" rel="noopener noreferrer"&gt;Waymo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;364&lt;/td&gt;
&lt;td&gt;Pipeline (N/A)&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/flexport" rel="noopener noreferrer"&gt;Flexport&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;206&lt;/td&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;&lt;a href="https://jobs.lever.co/zoox" rel="noopener noreferrer"&gt;Zoox&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;239&lt;/td&gt;
&lt;td&gt;Software&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/pinterest" rel="noopener noreferrer"&gt;Pinterest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;156&lt;/td&gt;
&lt;td&gt;EPD Ads and Ads Product&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Biggest job boards right now
&lt;/h2&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;Company&lt;/th&gt;
&lt;th&gt;Open jobs&lt;/th&gt;
&lt;th&gt;ATS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/spacex" rel="noopener noreferrer"&gt;SpaceX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2745&lt;/td&gt;
&lt;td&gt;greenhouse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/databricks" rel="noopener noreferrer"&gt;Databricks&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;891&lt;/td&gt;
&lt;td&gt;greenhouse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a href="https://jobs.ashbyhq.com/openai" rel="noopener noreferrer"&gt;OpenAI&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;804&lt;/td&gt;
&lt;td&gt;ashby&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/stripe" rel="noopener noreferrer"&gt;Stripe&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;728&lt;/td&gt;
&lt;td&gt;greenhouse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/anthropic" rel="noopener noreferrer"&gt;Anthropic&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;647&lt;/td&gt;
&lt;td&gt;greenhouse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/cloudflare" rel="noopener noreferrer"&gt;Cloudflare&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;445&lt;/td&gt;
&lt;td&gt;greenhouse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/datadog" rel="noopener noreferrer"&gt;Datadog&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;438&lt;/td&gt;
&lt;td&gt;greenhouse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;&lt;a href="https://jobs.smartrecruiters.com/wise" rel="noopener noreferrer"&gt;Wise&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;407&lt;/td&gt;
&lt;td&gt;smartrecruiters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/mongodb" rel="noopener noreferrer"&gt;MongoDB&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;401&lt;/td&gt;
&lt;td&gt;greenhouse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/elastic" rel="noopener noreferrer"&gt;Elastic&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;382&lt;/td&gt;
&lt;td&gt;greenhouse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/waymo" rel="noopener noreferrer"&gt;Waymo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;364&lt;/td&gt;
&lt;td&gt;greenhouse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;a href="https://jobs.ashbyhq.com/snowflake" rel="noopener noreferrer"&gt;Snowflake&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;357&lt;/td&gt;
&lt;td&gt;ashby&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;&lt;a href="https://jobs.ashbyhq.com/harvey" rel="noopener noreferrer"&gt;Harvey&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;344&lt;/td&gt;
&lt;td&gt;ashby&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;&lt;a href="https://boards.greenhouse.io/verkada" rel="noopener noreferrer"&gt;Verkada&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;315&lt;/td&gt;
&lt;td&gt;greenhouse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;&lt;a href="https://jobs.lever.co/palantir" rel="noopener noreferrer"&gt;Palantir&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;314&lt;/td&gt;
&lt;td&gt;lever&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How this was made
&lt;/h2&gt;

&lt;p&gt;Every number comes from the company's own public job board API, fetched at the time above. "New/updated" uses the posting date each board publishes (some boards report the last update instead of the first publish date). Companies on Workday or custom career sites are not included.&lt;/p&gt;

&lt;p&gt;The data was collected with the same code as the &lt;a href="https://apify.com/hirepulse/ats-job-pulse" rel="noopener noreferrer"&gt;ATS Job Scraper&lt;/a&gt; (every open job from a company's Greenhouse, Lever, Ashby, Workable, Recruitee or SmartRecruiters board) and the &lt;a href="https://apify.com/hirepulse/company-intent-radar" rel="noopener noreferrer"&gt;Company Intent Radar&lt;/a&gt; (hiring + Google ads + SEO signals per domain), both on the Apify Store. You can run the same lookup for your own list of companies.&lt;/p&gt;

&lt;p&gt;The report also lives at &lt;a href="https://edtool79-collab.github.io/hirepulse-tools/hiring-report.html" rel="noopener noreferrer"&gt;https://edtool79-collab.github.io/hirepulse-tools/hiring-report.html&lt;/a&gt; and is updated every week.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I built these tools. This report is generated automatically every week.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>hiring</category>
      <category>datascience</category>
      <category>ai</category>
    </item>
    <item>
      <title>See every Google ad a competitor runs, from just their domain (cURL, Python, n8n)</title>
      <dc:creator>eden</dc:creator>
      <pubDate>Thu, 15 Oct 2026 03:58:47 +0000</pubDate>
      <link>https://dev.to/ystudio3d/see-every-google-ad-a-competitor-runs-from-just-their-domain-curl-python-n8n-1eaf</link>
      <guid>https://dev.to/ystudio3d/see-every-google-ad-a-competitor-runs-from-just-their-domain-curl-python-n8n-1eaf</guid>
      <description>&lt;p&gt;Google's Ads Transparency Center lists the ads that advertisers run on Google Search, YouTube, Shopping, Play and Maps, with the dates each ad was first and last shown. For media buyers, agencies and B2B sales teams, that is a goldmine: what are my competitors running right now, since when, and in which format?&lt;/p&gt;

&lt;p&gt;Getting it into a pipeline is the annoying part. Some tools ask you to open the Transparency Center, find the advertiser by hand and paste its URL. That is fine for one brand. It is not fine for 50 competitors or a list of 1,000 prospects.&lt;/p&gt;

&lt;p&gt;So I built a small tool that takes plain domains (&lt;code&gt;nike.com&lt;/code&gt;, &lt;code&gt;adidas.com&lt;/code&gt;) and returns the ads as JSON.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://apify.com/hirepulse/google-ads-transparency-scraper" rel="noopener noreferrer"&gt;Google Ads Transparency Scraper&lt;/a&gt; runs on Apify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Domains in, ads out.&lt;/strong&gt; No advertiser IDs, no copy-pasting Google URLs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No browser, no proxies.&lt;/strong&gt; It reads the data through an API backend, so runs take seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two output modes:&lt;/strong&gt; &lt;code&gt;ads&lt;/code&gt; returns one record per ad, for swipe files and monitoring. &lt;code&gt;summary&lt;/code&gt; returns one compact record per domain (does it advertise, how many ads, which formats, latest ad), for lead lists, Clay tables and AI agents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Only new ads" monitoring:&lt;/strong&gt; schedule it daily or weekly with &lt;code&gt;only_new_ads: true&lt;/code&gt;, and each run returns only ads you have not seen before.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every advertiser behind a domain:&lt;/strong&gt; results include every advertiser whose ads lead to the domain, not only the brand itself. When I looked up &lt;code&gt;adidas.com&lt;/code&gt;, the advertisers included "Adidas America, Inc", the media agency "MediaCom L.L.C" and an individual advertiser name I did not recognize. That is useful for brand protection too.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. Quick start with cURL
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.apify.com/v2/acts/hirepulse~google-ads-transparency-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{ "domains": ["nike.com"], "country": "US", "max_ads_per_domain": 5 }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Python
&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;YOUR_APIFY_TOKEN&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;hirepulse/google-ads-transparency-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;domains&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;gusto.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;rippling.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;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;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;platform&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;google_search&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;# all, google_search, youtube, google_shopping, google_play, google_maps
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;format&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;all&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;               &lt;span class="c1"&gt;# all, text, image, video
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;max_ads_per_domain&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="c1"&gt;# up to 120
&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;ads&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;ad&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;ad&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;ad_id&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;ad&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;domain&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;ad&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;advertiser_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;ad&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;format&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;ad&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;days_running&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;days&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ad&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;transparency_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. n8n: weekly "new competitor ads" alert
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Schedule Trigger&lt;/strong&gt;: every Monday at 09:00.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTTP Request&lt;/strong&gt; (POST) to the &lt;code&gt;run-sync-get-dataset-items&lt;/code&gt; URL above, with:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&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;"domains"&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;"competitor1.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;"competitor2.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;"only_new_ads"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"max_ads_per_domain"&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;ol&gt;
&lt;li&gt;
&lt;strong&gt;IF&lt;/strong&gt; &lt;code&gt;ad_id&lt;/code&gt; is not empty (records without &lt;code&gt;ad_id&lt;/code&gt; are notes, such as "No new ads since the last run").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slack&lt;/strong&gt; or email: post the advertiser, format and &lt;code&gt;transparency_url&lt;/code&gt; of each new ad.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;&lt;strong&gt;Ads mode&lt;/strong&gt; (a real record from a test run on 14.10.2026):&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;"nike.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;"advertiser_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Nike, Inc."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"advertiser_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AR16735076323512287233"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"advertiser_verified"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"ad_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CR05432776185081757697"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"format"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"first_shown"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2023-11-16T21:51:37Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"last_shown"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-10-14T15:10:53Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"days_running"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1062&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"last_shown_days_ago"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"preview_image_url"&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://tpc.googlesyndication.com/archive/simgad/8151844300521207182"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"preview_image_width"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;348&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"preview_image_height"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;557&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"transparency_url"&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://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR05432776185081757697?region=US"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"country"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"US"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yes, that text ad has been running for almost three years.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary mode&lt;/strong&gt; (real, &lt;code&gt;adidas.com&lt;/code&gt;, all countries):&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;"adidas.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;"runs_google_ads"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"total_ads"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"ads_sampled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"text_ads"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;33&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"image_ads"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"video_ads"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"latest_ad_shown"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-10-14T15:29:10Z"&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;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;p&gt;Pay per use, no subscription:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;$0.005 per domain checked.&lt;/strong&gt; Also when the domain runs no ads, because "this company does not advertise on Google" is an answer too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;$0.0015 per ad returned&lt;/strong&gt; ($1.50 per 1,000 ads). Summary mode is charged per domain only.&lt;/li&gt;
&lt;li&gt;Higher Apify plans get volume discounts.&lt;/li&gt;
&lt;li&gt;Free Apify plan: try one domain with up to 5 ads.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Job&lt;/th&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1 competitor, 40 ads&lt;/td&gt;
&lt;td&gt;ads&lt;/td&gt;
&lt;td&gt;$0.065&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5 competitors, 200 ads&lt;/td&gt;
&lt;td&gt;ads&lt;/td&gt;
&lt;td&gt;$0.325&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,000 prospect domains&lt;/td&gt;
&lt;td&gt;summary&lt;/td&gt;
&lt;td&gt;$5.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Honest limitations
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;No spend or impression numbers.&lt;/strong&gt; Google does not publish them for commercial ads, so no tool can give you real numbers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No separate ad text field.&lt;/strong&gt; Google renders text ads as images. You get the image (&lt;code&gt;preview_image_url&lt;/code&gt;), which shows the full ad copy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Videos:&lt;/strong&gt; you get Google's preview link, not an MP4 file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Up to 120 recent ads per domain&lt;/strong&gt; per run.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;👉 &lt;a href="https://apify.com/hirepulse/google-ads-transparency-scraper" rel="noopener noreferrer"&gt;Google Ads Transparency Scraper on Apify&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using an AI agent? Connect it through Apify's MCP server: &lt;code&gt;https://mcp.apify.com/?tools=hirepulse/google-ads-transparency-scraper&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I built this tool.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>python</category>
      <category>automation</category>
      <category>marketing</category>
    </item>
    <item>
      <title>Hiring signals in Clay: which of your target accounts are hiring right now</title>
      <dc:creator>eden</dc:creator>
      <pubDate>Wed, 14 Oct 2026 17:24:34 +0000</pubDate>
      <link>https://dev.to/ystudio3d/hiring-signals-in-clay-which-of-your-target-accounts-are-hiring-right-now-1h66</link>
      <guid>https://dev.to/ystudio3d/hiring-signals-in-clay-which-of-your-target-accounts-are-hiring-right-now-1h66</guid>
      <description>&lt;p&gt;A company that is hiring for a role is usually about to buy what that role needs. A new "Head of RevOps" means a CRM project. Five open "Data Engineer" roles mean a data stack budget. That is why hiring is one of the most used buying signals in outbound.&lt;/p&gt;

&lt;p&gt;Clay can run any Apify Actor as an enrichment, so you can add live job data to every row of an account list. This post shows two setups with two small pay-per-use Actors I built:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Your accounts are known.&lt;/strong&gt; Get every open job, plus what changed since last week, from each company's own careers page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your accounts are not known yet.&lt;/strong&gt; Search Google Jobs for a role in a city and get the companies hiring for it.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Setup 1: open jobs for each company in your table
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://apify.com/hirepulse/ats-job-pulse" rel="noopener noreferrer"&gt;ATS Job Scraper&lt;/a&gt; takes a company domain, finds its job board (Greenhouse, Lever, Ashby, Workable, Recruitee, SmartRecruiters) and returns a one-row summary:&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;"record_type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"company_summary"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"company_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;"linear.app"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"total_active_jobs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;31&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"new_jobs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"new_job_titles"&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;"Senior Product Engineer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Enterprise Account Executive"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"jobs_by_department"&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;"GTM"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"Product"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"Operations"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&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;"top_locations"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"North America"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"Europe"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8&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;"top_technologies"&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;"React"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"TypeScript"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Example of the output format.)&lt;/p&gt;

&lt;p&gt;In Clay:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In your account table, click &lt;strong&gt;Add enrichment&lt;/strong&gt;, search for &lt;strong&gt;Apify&lt;/strong&gt; and pick &lt;strong&gt;Run Apify Actor&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Connect your Apify account (API token from the Apify console, Integrations page).&lt;/li&gt;
&lt;li&gt;Choose the Actor &lt;code&gt;hirepulse/ats-job-pulse&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Enter the input as JSON and insert your domain column as the value:
&lt;/li&gt;
&lt;/ol&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;"companies"&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;"&amp;lt;your Domain column&amp;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;"output_mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"summary_only"&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;ol&gt;
&lt;li&gt;Map &lt;code&gt;total_active_jobs&lt;/code&gt;, &lt;code&gt;jobs_by_department&lt;/code&gt; and &lt;code&gt;new_job_titles&lt;/code&gt; into columns.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now you can filter: "has 3+ open sales roles", "opened an engineering role this month", "hires in Europe".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost:&lt;/strong&gt; $0.05 per company found. Companies whose job board cannot be found are free. 500 accounts cost at most $25.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weekly changes:&lt;/strong&gt; add &lt;code&gt;"track_diff": true&lt;/code&gt; and a fixed &lt;code&gt;"state_id"&lt;/code&gt;. Each run then reports &lt;code&gt;new_jobs&lt;/code&gt; and &lt;code&gt;closed_jobs&lt;/code&gt; since the previous run with the same state_id, which is the real signal: a company that just started hiring.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup 2: find companies hiring for a role
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://apify.com/hirepulse/google-jobs-scraper" rel="noopener noreferrer"&gt;Google Jobs Scraper&lt;/a&gt; searches Google Jobs, which collects listings from LinkedIn, Indeed and company career sites:&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;"revops manager"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"salesforce administrator"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"country"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"US"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Austin,Texas"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"max_jobs_per_query"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&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 job comes back with &lt;code&gt;company&lt;/code&gt;, &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt;, &lt;code&gt;salary&lt;/code&gt; (parsed into &lt;code&gt;salary_min&lt;/code&gt; and &lt;code&gt;salary_max&lt;/code&gt; when shown), &lt;code&gt;posted_ago&lt;/code&gt; and &lt;code&gt;apply_url&lt;/code&gt;. When the apply link is on a company job board such as Workday, the full description is included too.&lt;/p&gt;

&lt;p&gt;Run it once from the Apify console or from Clay with a single-row table, then import the dataset into Clay (Clay can pull the results of an Apify Actor run as a source). De-duplicate on &lt;code&gt;company&lt;/code&gt;, and you have a list of companies that need what you sell, in the city you cover.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost:&lt;/strong&gt; $0.005 per search that returns jobs plus $0.001 per job. 200 jobs cost about $0.21.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Start with &lt;code&gt;summary_only&lt;/code&gt; in Setup 1. One row per company keeps Clay credits and Apify costs low.&lt;/li&gt;
&lt;li&gt;Filter by title in the Actor, not in Clay: &lt;code&gt;"title_keywords": ["sales", "account executive"]&lt;/code&gt; returns only the jobs you care about.&lt;/li&gt;
&lt;li&gt;You can test both on Apify's free plan before you commit. The Google Jobs Actor returns a 10-job preview there; full results need a paid Apify plan.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Setup 1 works for companies that use one of the six supported job boards. Companies on Workday, iCIMS or Taleo, or with a custom careers site, come back as not found and are not charged.&lt;/li&gt;
&lt;li&gt;Google Jobs results are what Google shows at search time; many listings are reposted on several boards, so de-duplicate by company and title.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Questions or a job board you need? Ask in the comments.&lt;/p&gt;

</description>
      <category>sales</category>
      <category>automation</category>
      <category>api</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Google Jobs results as JSON, for $1 per 1,000 jobs (no proxies, no browser)</title>
      <dc:creator>eden</dc:creator>
      <pubDate>Wed, 14 Oct 2026 16:40:13 +0000</pubDate>
      <link>https://dev.to/ystudio3d/google-jobs-results-as-json-for-1-per-1000-jobs-no-proxies-no-browser-5e9k</link>
      <guid>https://dev.to/ystudio3d/google-jobs-results-as-json-for-1-per-1000-jobs-no-proxies-no-browser-5e9k</guid>
      <description>&lt;p&gt;Google Jobs is the best free job index on the web. It pulls listings from LinkedIn, Indeed, company career sites and hundreds of smaller boards into one search. What it does not have is an API.&lt;/p&gt;

&lt;p&gt;The scrapers that fill that gap tend to break: they drive a browser through Google, get blocked, and you pay for failed runs. In October 2026 the most used one on the Apify Store failed 19% of its runs and charged $0.35 to $0.90 per 100 jobs, and another succeeded in only 1 of 500 runs in a month.&lt;/p&gt;

&lt;p&gt;So I built one that does not scrape Google from a browser at all. It reads Google Jobs through a commercial search-data API, so there are no proxies to rotate and nothing to break. This post shows how to use it.&lt;/p&gt;

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

&lt;p&gt;You send one or more searches and a country, optionally a city. You get one record per job:&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;"query"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"data engineer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"country"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"US"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"position"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Senior Data Engineer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"company"&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;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Austin, TX"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"contract_type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Full-time"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"salary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$140K–$180K a year"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"salary_min"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;140000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"salary_max"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;180000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"salary_currency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"USD"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"salary_period"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"year"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"posted_ago"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2 days ago"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"source"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"LinkedIn"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"apply_url"&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://..."&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;(Example of the output format.)&lt;/p&gt;

&lt;p&gt;What to expect from real data: in a test of 3 US searches (30 jobs), Google showed a salary on 5 of the 30 jobs. Many apply links go straight to the company's own career site. When the apply link is on a company job board (Workday, Greenhouse, Lever or Ashby), the record also includes the full job description; in a test of 79 US jobs that was 16 of them. Other jobs keep the &lt;code&gt;apply_url&lt;/code&gt; to the original posting.&lt;/p&gt;

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

&lt;p&gt;The tool is the &lt;a href="https://apify.com/hirepulse/google-jobs-scraper" rel="noopener noreferrer"&gt;Google Jobs Scraper&lt;/a&gt; Actor on Apify.&lt;/p&gt;

&lt;h3&gt;
  
  
  From the console
&lt;/h3&gt;

&lt;p&gt;Open the Actor, type your searches, pick a country, optionally a city such as &lt;code&gt;Austin,Texas&lt;/code&gt;, and press Start. Results appear as a table you can export to CSV, Excel or JSON.&lt;/p&gt;

&lt;h3&gt;
  
  
  From curl
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.apify.com/v2/acts/hirepulse~google-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"queries": ["data engineer"], "country": "US", "location": "Austin,Texas", "max_jobs_per_query": 50}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  From Python
&lt;/h3&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;YOUR_APIFY_TOKEN&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;hirepulse/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;account executive&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;sales development representative&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;GB&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;employment_types&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;fulltime&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;job&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="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;job&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;title&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="n"&gt;job&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company&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="n"&gt;job&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  From an AI agent
&lt;/h3&gt;

&lt;p&gt;Add Apify's MCP server with this one tool to Claude, Cursor or any MCP client:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://mcp.apify.com?tools=hirepulse/google-jobs-scraper
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then ask: "Which companies in Austin are hiring data engineers this week, and what do they pay?"&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;$0.005 per search that returns jobs. Searches with no results are free.&lt;/li&gt;
&lt;li&gt;$0.001 per job.&lt;/li&gt;
&lt;li&gt;100 jobs from one search cost about $0.11.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You need an Apify account. You can try it on the free Apify plan: each free run returns the first 10 jobs of your first search. Full results need a &lt;strong&gt;paid Apify plan&lt;/strong&gt;, because every search has a real data cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related
&lt;/h2&gt;

&lt;p&gt;If you track specific companies rather than roles, the &lt;a href="https://apify.com/hirepulse/ats-job-pulse" rel="noopener noreferrer"&gt;ATS Job Scraper&lt;/a&gt; reads every open job, with full descriptions, straight from a company's Greenhouse, Lever, Ashby or Workable board, and tells you what changed since the last run.&lt;/p&gt;

</description>
      <category>api</category>
      <category>automation</category>
      <category>python</category>
      <category>jobs</category>
    </item>
  </channel>
</rss>
