Watch the web for you.

Describe what to track, add the pages, and get structured data when something changes.

Invite-only

skrapi is open to invited accounts. Sign in with the email your invitation was sent to: we email you a one-time link, there are no passwords.

Sign in to skrapi

Reading a task from your own code? See the public API.

Inside skrapi

One task, from description to delivery.

1Describe it

“Toyota Land Cruiser J200 (V8, 2012–2021) for sale in Germany, under 150,000 km and up to €45,000. Track price, mileage and year, and tell me about new listings, price cuts and cars that sell.”

  • suchen.mobile.de/fahrzeuge/search.html?ms=24100%3B32…&ml=%3A150000&p=%3A45000
  • autoscout24.de/lst/toyota/land-cruiser?kmto=150000&…sort=age&desc=1

2Get structured items

  1. 01Land Cruiser V8 Executivemobile.de · Hamburg · 118,400 km · 2016€42,500
  2. 02Land Cruiser V8 Black Editionautoscout24.de · München · 96,300 km · 2018€44,750
  3. 03Land Cruiser V8 D-4Dkleinanzeigen.de · Hannover · 138,500 km · 2012€35,900
  4. 04Land Cruiser V8 VXmobile.de · Köln · 141,200 km · 2013€37,900

46 cars · 3 sources · checked every 15 min

3See what changed

  1. 01Land Cruiser V8 Executive14:05 · mobile.de · was €44,900€42,500
  2. 02Land Cruiser V8 D-4D13:50 · mobile.de · New item€39,800

Healthy · mobile.de Blocked · autoscout24.de

4Wherever you need it

Telegram · @skrapi_alerts_bot
Price drop on Land Cruiser V8 Executive
€44,900 → €42,500 · 118,400 km · mobile.de
GET …/changes
{ "field": "price",
  "previous": 44900,
  "current": 42500 }

What people watch

Anything a page shows in a list or a table. If you can see it in your browser, you can describe it.

  1. Every price cut across your search

    mobile.deautoscout24.dekleinanzeigen.de

    “Toyota Land Cruiser J200 in Germany under €45,000 and 150,000 km. Track price and mileage.”

    • A message for every new listing
    • Price cuts shown as before → after
    • Sold cars keep their history
  2. Catch the refurb before it sells out

    apple.combackmarket.comswappa.com

    “Refurbished 14-inch MacBook Pro, M3 Pro or better, under $1,600. Track price and condition.”

    • New stock the moment it appears
    • Lowest price across shops
    • History of every change
  3. Know when their pricing changes

    acme-analytics.com

    “Plan names and monthly prices on acme-analytics.com/pricing.”

    • Plan and price changes to Slack via webhook
    • Old values kept for comparison
    • A clear alert if the page is redesigned

A feed of what changed

Every run is compared with the one before. You see new items and changed values, not a dump of the whole page.

LiveSample task, updates every few seconds
  1. 01Land Cruiser V8 Executivemobile.de · Hamburg · just nowPrice drop
    was €44,900now €42,500
  2. 02Land Cruiser V8 Black Editionautoscout24.de · München · 2 minNew item
    now €44,750
  3. 03Acme Analytics · Team planacme-analytics.com · 9 minPrice rise
    was $69now $79
  4. 04Land Cruiser V8 D-4Dkleinanzeigen.de · Hannover · 24 minNo longer listed
    was €35,900now Gone
  5. 05MacBook Pro 14″ M3 Max · 36 GBbackmarket.com · 41 minBack in stock
    was Sold outnow In stock
  • First run sets a baseline

    Everything already listed is recorded quietly. You're only notified about what appears after.

  • You choose the fields that matter

    Track price and mileage, ignore a reworded title. Changes to untracked fields don't create events.

  • Gone isn't deleted

    When an item drops out of the results, it's marked "not in latest results" and its history stays.

Delivered the way you work

Turn on one destination or all three. Each task has its own endpoints and settings.

JSON API

Items and change history at task-specific URLs, with a private token.

GET /v1/tasks/land-cruiser-j200/items
{
  "data": [{
    "title": "Land Cruiser V8 Executive",
    "price": 42500,
    "mileage_km": 118400,
    "year": 2016,
    "first_seen": "2026-10-03T08:10Z"
  }]
}

Telegram

A short message per event, to a private chat or a group.

Price drop · Land Cruiser V8 Executive
€44,900 → €42,500 · Hamburg · mobile.de
14:05
New listing · Land Cruiser V8 D-4D
€39,800 · 132,000 km · Bremen · mobile.de
13:50

Webhooks

Each event POSTed as JSON. Failed deliveries retry automatically, then wait for you.

  • 14:05 · field_changed503 · retry 5/5
  • 13:50 · item_new200 OK
  • 12:32 · field_changed200 OK

Retrying resends the stored event. It never reruns extraction.

One broken page doesn't break the task

Websites change, block bots and go down. skrapi is built so that a failure stays contained and is always visible.

Run #14 · 14:05 Partial failure
mobile.deHealthy21 cars · updated now
autoscout24.deBlocked · CAPTCHA18 cars · kept from 12:32
kleinanzeigen.deRepairing7 cars · kept from 12:32

mobile.de results were saved and notified. The other two sources kept their last valid data, marked stale, until they recover.

  • Sources run independently

    A blocked or slow site never holds up the others.

  • Bad results never overwrite good ones

    Every extraction is validated. If prices come back empty, the run is discarded.

  • Stale data is labeled

    You always see when a value was last confirmed.

  • Scripts repair themselves

    When a layout changes we test a fix first, and ask you when we can't.

The public API

Read a task’s items and changes from your own code. Base URL https://api.skrapi.app/v1

  • Current itemsGET /tasks/{task}/items

    The latest valid values of every item the task has found, newest first. Each item carries first_seen, last_seen and a status: current, stale or absent.

  • Change historyGET /tasks/{task}/changes

    Every change event, newest first: item_new, field_changed with the previous and current value, or item_missing.

Query parameters

limit
1–200 per page, 50 by default.
cursor
The next_cursor from the previous page; null on the last one.
since
An ISO 8601 date: only items seen or changes detected since then.
  • Each task has its own token, shown in the task’s Outputs tab. It reads that task only.
  • Read-only, so it can be called from any origin, including the browser.
  • 300 requests a minute per token.
curl https://api.skrapi.app/v1/tasks/land-cruiser-j200/changes \
  -H "Authorization: Bearer <task token>"
{
  "task": "land-cruiser-j200",
  "data": [{
    "detected_at": "2026-10-03T14:05:12Z",
    "type": "field_changed",
    "item_id": "382614553",
    "source": "mobile.de",
    "field": "price",
    "previous": 44900,
    "current": 42500
  }],
  "next_cursor": null
}