How to Turn Any Website Into a Spreadsheet
2026-09-08
Quick answer: Give a URL or describe a category of sites, name the columns you want, and Searchbase reads the pages and streams a table back with the source page linked on every cell. No selectors, no scraper, no maintenance when the site changes its markup. Describe your ideal customer. Searchbase finds them across Europe in one prompt, with the source on every cell.
This is the oldest request on the internet: the data is on the page, I want it in a sheet. The traditional answers all ask for something first. A scraper asks you to name the elements. A no-code tool asks you to click through a training flow per site. An extension asks you to be on the page. Today teams use Octoparse when the site is hard and they do not write code, and it is good at that, but you still build a workflow per site.
The version here asks for two things only: where to look, and what the columns should be.
Step 1. Start with one page and name your columns
The simplest case. You have a URL and you want it structured:
"Take https://example.com/products and give me a table with product name, price, availability, product URL and image URL."
The columns come from your sentence. There is no schema editor, and the words you use become the headers. If a column turns out to be wrong, you change the sentence, not a configuration.
Two habits make this work much better. Name the unit of a row explicitly, because "one row per product variant" and "one row per product" give very different tables from the same page. And say what to do with pagination: "follow the pagination to the end" or "just the first page" removes the most common ambiguity in the whole job.
Step 2. Read the plan before it fetches
The agent shows what it intends to do: open the URL, identify the repeating unit, follow pagination, read each item page if the fields require it, extract the named columns, deduplicate.
That fourth step is worth catching. A listing page often carries name and price, while availability and the full description live on the item page. If your columns need the item page, the agent will open one per row and the cost goes from one credit for the listing to one credit per product. If you do not need those fields, drop them from the prompt and the run gets ten times cheaper.
Step 3. Widen from one site to a category
This is where it stops being a scraper. You do not need to know the URLs:
"Find the online shops selling handmade ceramics in Italy and give me shop name, website, product categories, price range, whether they ship internationally, and a contact email."
Now the agent has to find the sites before it reads them. It searches, in Italian and English, collects candidate sites, opens each one, reads the pages that carry the fields you asked for, and builds the same shape of table.
That difference is the whole point. A scraper answers "extract this from this URL". This answers "which sites, and extract this from all of them", and the second question is the one you usually actually have. There is no list of URLs you could have handed a scraper, because assembling that list was the hard part.
Step 4. Watch rows stream and fix the definition early
Rows appear as they are confirmed. Read the first ten before the run finishes, because that is when a wrong definition is cheapest to fix. If marketplace sellers are showing up and you wanted independent shops, say:
"Exclude Etsy and marketplace listings, I want shops with their own domain."
If a column is coming back mostly empty, that is real information about the sites rather than a bug. Price range is often absent because shops publish per-product prices and no summary. Ask for the derived version instead: "instead of a price range, give me the lowest and highest product price you can see".
Step 5. Add columns without starting over
Columns are additive. Once the rows exist you can ask for more:
"Add a column for the platform the shop runs on, and a column for whether they have a wholesale or trade page."
The agent reads what it needs for the new columns and leaves the existing table alone. This is how a first cheap pass turns into a rich table without paying for the expensive fields on rows you were going to discard anyway.
Step 6. Export, or re-run it later
Export is JSON on every plan, CSV from Starter upward, the API from Pro and webhooks on Business. On the higher plans a monthly re-run can land straight in your own database.
Re-running is where the freshness badge earns its place. Run the same prompt in a month, diff on the URL column, and you can see which prices moved and which shops disappeared, because every cell says when it was read.
What you get back
A table with the columns you named, one row per unit you defined.
Every cell carries a link to the exact page that value came from. This is the feature that changes how the output gets used. A price you can click back to is a price you can put in a report, show a client, or defend in a meeting. A price in a spreadsheet with no provenance is a number someone has to trust you about.
Every cell also carries a freshness badge saying when it was collected, and the extraction method used, so you know whether a value was read from visible page text or from a structured field on the page.
Values that cannot be verified stay n/a. If a shop does not state whether it ships internationally, the cell is empty rather than a plausible guess. Around 33 extraction methods sit behind this, and none of them is inference from what similar sites usually say.
What it costs in credits
A page read costs about 1 credit. A social profile costs about 3. A Deep Research report costs 20 to 40.
So the arithmetic is easy to do in advance. One listing page with 60 products, all fields visible on the listing, costs a handful of credits. The same 60 products where availability lives on the item page costs about 60, because it is 60 page reads. A category sweep across 80 shops, reading three or four pages per shop, lands around 250 to 350.
Free gives 150 credits a month, which is genuinely enough to turn several pages into tables and decide whether this belongs in your work. Starter is €29 a month for 1,000 credits and adds CSV export. Pro is €79 for 4,000 credits with API access, the plan for anyone rebuilding tables on a schedule. Business is €199 for 12,000 credits with webhooks.
The single biggest cost lever is which fields you ask for. Every field that forces an item-page visit multiplies the run by your row count. Ask for the cheap columns first, look at the table, then add the expensive ones to the rows you kept.
Limits and honesty
Public pages only. Nothing behind a login, nothing behind a paywall, no subscriber content, no member areas. If you can only see it signed in, it is out of scope.
Values that cannot be verified stay blank. If the page does not say it, the cell is empty. That includes fields that feel like they should exist, such as stock quantity or margin.
This is not scraping infrastructure. If you already have 200,000 URLs and want them fetched hourly on a schedule, a purpose-built scraping platform will do it cheaper. This is priced per action and built for research jobs that end in a table, not for a permanent extraction pipeline.
Some sites are genuinely hard. Pages that render only after a heavy interaction, aggressive bot walls, or content that exists only inside a PDF image can come back thinner than the page looks to you. When that happens the cell is blank, not invented.
Row definition is your call and it matters. "One row per product" and "one row per variant" produce different tables, and the agent follows what you said. If the count looks wrong, the definition is usually the cause.
Outreach is drafted, never sent. If you go from a table of shops to contacting them, the agent writes the drafts and you review and send them yourself.
Frequently asked questions
Do I need to know the URLs? No, and that is the main difference from a scraper. You can give a URL if you have one, or describe the category of sites and let the agent find them. Both end in the same table.
What happens when the website changes its layout? Nothing you have to fix. There are no selectors to break, because the agent reads the page rather than following a recorded path through its markup. A scraper built on CSS selectors needs maintenance after a redesign, and this does not.
Can it follow pagination and open detail pages? Yes. Say so in the prompt, because it changes the cost significantly. Following pagination to the end and opening every item page is one credit per page read.
Can it read tables inside PDFs?
Text-based PDFs on public URLs, yes. A PDF that is a scanned image of a table is much less reliable, and unreadable values come back as n/a rather than as a best effort.
How do I know a number is right? Click the source link on the cell and read the page. That is the whole design. Every value is one click from the page it came from, with a badge saying when it was read.
Can I schedule this to run automatically? Re-run the prompt when you need it, and on Pro and Business pull the results through the API or push them to a webhook so a monthly rebuild lands in your own systems.
Prices checked on 2026-09-08 on searchbase.org.