Listing Scraper

Turn a listing, catalogue or register into a table of records with your own columns.

Listing Scraper reads a listing page — classifieds, a directory, a register of members — and stores each entry as a record with the fields you define. ## Setting it up **Listing URLs** — one per line. **What one record is** — three ways, depending on how the site is built: | Choice | When to use it | What it needs | |---|---|---| | Rows on the listing page | Everything you need is on the list itself | A **row selector** | | A page per record | The list links to each record's own page | A **link selector** and a **sample record URL** | | One page, one record | A single profile page | Nothing more | **Next page link** — the selector for the "next" link. Leave it empty to read only the first page. **Fields to extract** — starts with Name, Email, Phone and City. For each field: a label, a CSS or XPath selector, optionally an attribute to read instead of the text (`href`, `src`…), and "several values" to join repeated matches. Two tools do the hard part for you: **🖱 Pick** opens the real page inside the form so you click the element you want, and **👁 Try it on the page** runs your whole template against the live page and shows the first few records with a match count. ## Limits and pace - **Max records per run** (200 by default) and **max pages** (50 by default) — per listing URL. - **Delay between pages** — 1 second by default. - **Load with a browser** — for listings built with JavaScript. Note that the preview always reads without a browser, so such a listing looks empty in the preview even when the option is on. ## What makes a record the same record Either **its own link** (the default) or **a set of fields together** — useful when the same entry appears under different addresses. This is what lets a later run recognise a record it already has instead of duplicating it. ## What it costs Charged **per record**. When a run starts, the most it could cost (max records × number of listings) is reserved from your balance; when it ends, you are charged for the records actually collected and the rest is returned. The campaign page shows both numbers. If the reservation is more than your balance, the run is refused with a message telling you what to lower. ## The results Three tabs: **Records** (your own columns, plus when each was last seen; filter by listing, by still listed or no longer listed, and search across every value), **Listings** (status and reason per URL) and **Runs** (records, pages, and what each run cost). Records found again are updated rather than duplicated. Records that disappeared from the listing are **kept** and marked "no longer listed since" — and a run cut short by a limit, an error or the balance never marks anything as gone. Exports: Excel, CSV, JSON and TXT, for the whole campaign or exactly what your filters show. Above 10,000 records the file is split automatically and comes as a .zip. Records deliberately live in their own store, separate from the Contact Database — you will find them under **Contacts → Listings**, where you can combine campaigns and export them together. ## Worth knowing - Records cannot be deleted while a run is queued or running; delete them when it has finished. - Values like "-", "n/a" or "няма данни" are treated as empty and not stored. - Some sites refuse to open inside the picker. Then type the selector and check it with "Try it on the page".