← All guides
CSS Selectorextraction

How to Use CSS Selector Extraction

Target HTML elements by class, ID, or attribute and pull out their text. The fastest method for well-structured pages.

Verid Guides·4 min read

What is it?

CSS Selector extraction lets you point at HTML elements using the same selectors you write in stylesheets - class names, IDs, element types, attribute values, and combinators. Verid grabs the text content of the matching element and stores it as a named field you can track over time.

It's the right first choice for most websites. If a page has meaningful class names and the data you want lives in a predictable element, CSS selectors will work reliably and be easy to maintain.

When to use it

  • Tracking a price, heading, stock badge, or any visible text on a page
  • The site uses semantic class names like .price, .version, .stock-status
  • You're comfortable with browser DevTools (or willing to copy a selector with one click)

How to configure it

Pick CSS Selector as your extraction method, then add one or more named fields. Each field maps a name to a selector:

{
  "method": "css",
  "fields": {
    "price": ".current-price",
    "availability": ".stock-status"
  }
}

When a selector matches multiple elements, Verid returns the text of the first match. If no element matches, the field is omitted from the output.

Finding selectors in DevTools

  1. Right-click the element you want on the page
  2. Choose Inspect
  3. Right-click the highlighted node in the Elements panel
  4. Choose Copy → Copy selector

The browser-generated selector is usually very specific - feel free to simplify it.


Example 1 - Track a product price

Goal: Get alerted when a laptop's price drops on an online store.

Page HTML (simplified):

<div class="product-summary">
  <h1 class="product-title">MacBook Pro 14"</h1>
  <span class="price current-price">$1,999.00</span>
  <span class="stock-status in-stock">In Stock</span>
</div>

Configuration:

{
  "method": "css",
  "fields": {
    "price": ".current-price",
    "title": ".product-title",
    "availability": ".stock-status"
  }
}

Output:

{
  "price": "$1,999.00",
  "title": "MacBook Pro 14\"",
  "availability": "In Stock"
}

Verid alerts you as soon as price or availability changes between runs.


Example 2 - Monitor an open job count

Goal: Know the moment a company posts new roles on their careers page.

Page HTML:

<div class="jobs-header">
  <h2>Open Roles <span class="count">(14)</span></h2>
</div>

Configuration:

{
  "method": "css",
  "fields": {
    "open_roles": ".jobs-header .count"
  }
}

Output:

{
  "open_roles": "(14)"
}

When a new role is posted and the page updates to (15), you get a notification.


Example 3 - Track a library version badge

Goal: Get notified when a package publishes a new release on its documentation site.

Page HTML:

<aside class="sidebar">
  <span class="version-badge">v4.2.1</span>
</aside>

Configuration:

{
  "method": "css",
  "fields": {
    "version": ".version-badge"
  }
}

Output:

{
  "version": "v4.2.1"
}

Example 4 - Watch a stats table leader

Goal: Track the top team in a standings table.

Page HTML:

<table class="standings">
  <tbody>
    <tr class="rank-1">
      <td class="team">Golden State Warriors</td>
      <td class="wins">42</td>
      <td class="losses">18</td>
    </tr>
  </tbody>
</table>

Configuration:

{
  "method": "css",
  "fields": {
    "leader": ".standings .rank-1 .team",
    "wins": ".standings .rank-1 .wins",
    "losses": ".standings .rank-1 .losses"
  }
}

Output:

{
  "leader": "Golden State Warriors",
  "wins": "42",
  "losses": "18"
}

Tips

  • Namespace your selectors. Use .product-card .price instead of just .price when multiple prices appear on the page.
  • Prefer class or ID selectors over bare tag selectors (span, div) - tag-only selectors break when the page adds more elements.
  • Simplify copied selectors. DevTools often generates div > main > section:nth-child(2) > span.price when .price is enough.
  • JavaScript-rendered content. If the element only appears after JS runs, the selector will return nothing. Use the AI (LLM) method instead, or check if the data is available in a JSON API endpoint.

Common issues

Problem Fix
Field is missing from output No element matched - double-check the selector in DevTools
Getting the wrong element Make the selector more specific: .product .price instead of .price
Content is empty The element may be rendered by JavaScript after page load

Ready to put this extraction method to work? Point Verid at your URL and get a signed alert on every change — 5 monitors free, no credit card.

Try Verid for free

5 monitors, no credit card required.