Glossary · No selectors

How to stop your scraper breaking when a site redesigns its HTML

CSS selectors and XPath are a bet that markup never changes. Ask for the price, not div.grid__x9 > span.ttl.

A selector like div.grid__x9 > h4.ttl describes an accident of this week's markup. Class names minify, A/B tests swap layouts, frameworks re-render the same content into a new DOM. The data — a name, a price, a rating — usually did not move.

Plainscrape does not take CSS or XPath. You describe the fields in plain language. Extraction is anchored to meaning. When a field is not on the page, it comes back empty, not a confident hallucination.

We extract what the page says, not where the page says it.

There is no public “saved selector” API to invalidate. Each call carries the instruction. Conversational refine of a stored result is on the roadmap; until it ships, a follow-up is a new request, billed as a new fetch.

Longer engineering notes: Why Plainscrape?

FAQ

Plainscrape takes a plain-language instruction. There are no selectors or XPath to write or maintain. When a site redesigns its markup, the meaning of the page is what you asked for — not a class name.

Stop treating CSS/XPath as the contract. Ask for the product price, the title, the rating. Plainscrape extracts what the page says, not where the page says it.

No. Describe the data. If a field is not on the page, it comes back empty — not a plausible guess.

No public selector-cache API. You send the question on each call. Conversational refine of a saved result is on the roadmap; until it ships, a follow-up is a new request.

Get an API key.

Start the 100-page trial

14 days · no card · failed pages free · full MCP setup