Start
Free
No credit card required
- 3,000 credits, valid for 30 days
- Shopify, WooCommerce and Wix stores
- One run at a time
What this covers
- Extract only
- 3,000 pages
- Extract + Enrich
- 1,500 pages
Ecommerce scraping & enrichment
AI writes a crawler for each store and turns its pages, or your files, into clean, matched product data. Then let your agent run it all, from the first crawl to the answers.
Start for free · No credit card · Plans from $30/month
See how it works first:Follow 1 shoe through Extralt
Extract, Enrich and Explore are the 3 shapes in our logo: collect the pages, turn them into one clean, matched dataset, then get answers from it.
01 Extract
AI writes a crawler for each website and proves it on real pages; then it runs as plain code whenever you choose. Each product page becomes a Capture: what the page said, its URL and when it was seen.
Product pagetempo.example
Homme › Chaussures › Baskets
NIKE Air Max 90 Black
134,99 €
Taille 42
En stock
Livraison offerte dès 50 €
↳ 1 Capture · /products/airmax90-black-42 · 1 Sep 09:00
02 Enrich
AI turns each Capture into an Item: clean fields in English, one price format, a standard category. Items are then matched across stores into products, variants, listings and offers, with their reviews and changes.
Itemtempo.example
↳ Nike Air Max 90 · Black · EU 42 · 3 offers
03 Explore
4 Analyses of the data you collect: price position, price movements, availability changes and assortment overlap. For anything else, ask the agent: it queries your data and shows its work. Each number links back to the pages it came from.
Price position7 Sep
−5.5%
Air Max 90 at north.example against the median of field and tempo
↳ 3 offers · 3 pages
Under the hood
AI studies each store once, writes its crawler and proves it on real pages before your first run. Every page after that runs through compiled code, not a model, so extraction never invents a value. Here is the crawler for tempo.example, the third store in the walkthrough.
# reverse-engineer the API
# write the crawler
# prove it
# run · 1 Sep 09:00 UTC
# redesign · 3 Nov
detect · record · select · replay
We load a product page, record every request it makes and find the internal API that returns the product: the same one the store’s own frontend calls. Replayed over plain HTTP, it gives the full product in clean JSON, and changes less often than a page layout. Shopify, WooCommerce and Wix have native routes; embedded JSON comes next, HTML last.
# reverse-engineer the API
map · generate · compile
A model maps the catalog and writes the extraction code once, in Rust. It compiles to a native library, so every page after that runs as plain code: no model call per page, and the same page always gives the same record.
# write the crawler
validate · check
Before your first run, the crawler has to extract every required field from 3 live product pages. Each value must come from the page itself: a crawler that invents or hard-codes a value does not ship.
# prove it
route · fetch · retry
Residential IPs in the store’s country, with the exit country checked. Each page comes from the store’s reverse-engineered API, or over plain HTTP where there is none. Cloudflare, DataDome, Akamai and other anti-bot challenges are detected and retried with a new fingerprint and IP.
# run · 1 Sep 09:00 UTC
score · rebuild · resume
Every run scores what it extracts. When a redesign breaks the crawler, the run stops before bad records reach your data, and AI rebuilds it, proves it again and puts it back to work.
# redesign · 3 Nov
Standardized
Whatever the site, every crawler writes the same fields: Captures your applications can use as they are. Enrich then puts them in one language, one format per value and one taxonomy, the model Explore matches and compares on.
| Field | As the 3 pages wrote it | Item |
|---|---|---|
| title | Nnorth.example: Nike Air Max 90 - BlackFfield.example: Air Max 90 / BlackTtempo.example: NIKE Air Max 90 Black | Nike Air Max 90 · Black · EU 42 |
| brand | Nnorth.example: NikeFfield.example: NikeTtempo.example: NIKE | Nike |
| size | Nnorth.example: Size 42Ffield.example: EU42Ttempo.example: Taille 42 | EU 42 |
| price | Nnorth.example: €139.99Ffield.example: 139,99 EURTtempo.example: 134,99 € | €139.99 · €139.99 · €134.99 |
| availability | Nnorth.example: In stockFfield.example: availableTtempo.example: En stock | In stock |
| category | Nnorth.example: Men › Shoes › TrainersFfield.example: SneakersTtempo.example: Homme › Chaussures › Baskets | Apparel & Accessories › Shoes › Sneakers |
Captures keep each page’s own words. Items classify every product into Shopify’s open Standard Product Taxonomy (2026-05): 14,606 categories, each with its own attributes, 19 for sneakers.
Browse the taxonomyYour data
Every Capture, Item and offer lands in ClickHouse, organized as products, variants, listings and offers. Read it from the dashboard, your code or your agent, at no credit cost.
RequestGET
$ curl -G https://api.extralt.com/v1/explore/analyses/price-position \
-H "Authorization: Bearer $EXTRALT_API_KEY" \
-d reference_store_id=$NORTH -d country=FR -d currency=EUR
More of v1
GET /v1/explore/analyses/price-position
GET /v1/explore/analyses/price-movements
GET /v1/explore/analyses/availability-changes
GET /v1/explore/analyses/assortment-overlap
GET /v1/explore/variants/{variant_id}/history
POST /v1/extract/robots
POST /v1/extract/schedules
POST /v1/enrich/enrichments
GET /v1/extract/captures/export
Response200 · application/json
{
"analysis_id": "price_position",
"status": "eligible",
"data": [{
"title": "Nike Air Max 90",
"options": { "color": "Black", "size": "EU 42" },
"reference_store_host": "north.example",
"reference_price": "129.99",
"comparison_median_price": "137.49",
"delta_to_median_percent": "-5.454942",
"reference_evidence": {
"url": "https://north.example/products/air-max-90-black-42",
"observed_at": "2026-09-07T09:00:00Z"
}
}],
"next_cursor": null
}
REST API. Every Analysis, variant, offer and price history is a v1 route, with an OpenAPI spec. Runs, schedules and exports too.
OpenAPI specPricing
1 credit extracts a product page and 1 more enriches it: on Scale 1M, $2 per 1,000 pages for both. Only product pages use credits: sitemaps and catalog pages, residential IPs, protected sites and failed pages cost nothing.
Included0 credits
24,632credits usedof 50,000
Scale 50k · $100/month · 25,368 credits left for other runs
A crawler takes a URL and a country. We reverse-engineer the store’s API and choose each page’s route, IP and retries, and the price does not move with any of them.
POST /v1/extract/robots
{
"url": "https://tempo.example",
"country_code": "FR"
}AI writes each crawler before your first run, around the store’s own API where it has one. Every run after that is compiled code over plain HTTP: no browser and no model per page. So one price covers every page, and a failed page costs you nothing.
Every plan uses the same 2 credits per page. Start is free, with 3,000 credits once. Scale runs from $30 to $1,000 a month, and larger plans pay less per credit.
Free
No credit card required
What this covers
$100/month
$2.00 per 1,000 credits
What this covers each month
Coming soon
Our lowest price per credit
FAQ
Start with your stores
Add a public product or catalog URL and choose its market. Start’s 3,000 free credits cover 1,500 pages, extracted and enriched.
Start for free · No credit card · Plans from $30/month