Back to Tools

Product Spec Extractor

Use cases

Product data extraction Competitive spec comparison Product feed enrichment Structured data audits

Uses BeautifulSoup with configurable CSS selectors to locate specification containers and extract key-value pairs.

Columns auto-sorted by frequency (specifications in more products rank higher).

Configurable request delays (0.5-10s), timeouts (5-60s), and custom User-Agent headers.

Streamlit App

Platform

Browser-based (no installation required)

Input

Product URLs via text paste or CSV upload

CSS selectors for key and value elements

Optional: parent container selector

Output

CSV with extracted product specifications

Launch App View Source

Features

  • BeautifulSoup CSS selector extraction
  • Key/value CSS selector configuration
  • Optional parent container scoping
  • Request delay slider (0.5-10 seconds)
  • Timeout configuration (5-60 seconds)
  • Columns sorted by specification frequency

How to use

  1. 1 Enter URLs or upload CSV and select column
  2. 2 Define CSS selectors for spec keys and values
  3. 3 Test selectors on a single page first
  4. 4 Configure request delay and timeout
  5. 5 Run extraction across all URLs
  6. 6 Download structured CSV with specs as columns

Frequently asked questions

Why are spec values paired with the wrong names?
Keys and values are matched by position: the first element matching the key selector is paired with the first element matching the value selector, and so on. If the two selectors return different numbers of elements, everything after the mismatch shifts and trailing keys get empty values. Setting the optional parent container selector so both selectors only match inside the spec block is the usual fix.
Why does extraction return nothing on a site where I can see a spec table?
The tool fetches raw HTML with the requests library and parses it with BeautifulSoup; it does not execute JavaScript. If the specification table is rendered client side it will not be in the fetched HTML. Use the Test Selectors button on one URL first: if it reports zero keys, the page structure hints show how many dl and table elements actually exist in the raw HTML.
The parent container selector I set is wrong. Does the tool warn me?
Only in test mode. When testing a single URL it warns that the container was not found and falls back to searching the whole page. During the full extraction run the fallback is silent, so a bad container selector can quietly pull key-value pairs from anywhere on the page. Always test before running the full list.
How is the output CSV structured?
One row per URL and one column per unique specification name found across all pages, with columns ordered by how many products contain that spec (most common first). URLs that failed get a row with an Error column instead, so failures are visible in the same file. The CSV is written as UTF-8 with BOM so it opens cleanly in Excel.
What selectors work for table-based spec layouts instead of definition lists?
The defaults (dt and dd) suit definition lists. For tables, use 'th' or 'td:first-child' as the key selector and 'td:last-child' as the value selector, ideally scoped with a parent container selector such as 'table.specifications'.

Need something built for your business?

This tool started as bespoke client work. I build custom scripts, data pipelines, and full apps for SEO and product data problems that off-the-shelf tools don't solve.

Tell Me What You Need