Custom scraper

Fruugo Scraper

We do not have a dedicated Fruugo data API. What we do have is an AI scraper that reads a fruugo.com page you point it at, turns it into the columns you asked for and hands them back by REST, CSV or Excel — on a schedule, priced per page.

  • fruugo.com
  • fruugo.co.uk
Three stages of a Fruugo run: paste a fruugo.com URL billed on the render plus residential tier at EUR 3.75 per 1,000 pages; declare columns such as product_title and seller_name; and the 11 columns it returns.

How to scrape Fruugo

Fruugo publishes no read API for its catalogue. There is no key to apply for and no endpoint to call, which is why the page is the interface. Fruugo sells the same inventory into many countries at different prices, which makes it a cheap way to see what a cross-border price looks like in each market. The way to get the data is to read the page the way a customer sees it: point the AI scraper at a fruugo.com URL, declare the columns you want in plain English, and schedule it. On a marketplace the price on the page belongs to a seller, not to the site, so a row without the seller on it is an observation you cannot act on.

What the AI scraper does with a fruugo.com link

The same three steps as any other page you point it at. Nothing about Fruugo is pre-built, which is exactly why it works on pages nobody wrote a connector for.

  1. Paste the link

    Give it a fruugo.com product or listing URL. Market, currency and assortment all come from the page itself, so there is no region setting to get wrong — the URL decides.

  2. Declare the columns

    Name each field, give it a type and write a line telling the AI what to look for. “product_title” and “seller_name” are the two most people start with. The schema is yours and you can change it between runs.

  3. Schedule it and collect

    Run it hourly, daily or on demand. Every run returns the same columns in the same order with a timestamp on each row, so the history builds itself.

Set it up once. The data keeps coming.

Save your search once and it runs by itself. Every run lands in your own Scrapewise database, and you pick how to read it.

  1. Set it up once

    Add your ASINs, keywords, places or apps to a scraper in the web app. New accounts get 5 free requests.

  2. Runs on your schedule

    Pick daily, weekly on the days you choose, every few days, or the first or last day of the month. Scheduled runs start at night, European time. Need it more often? Start runs from your own code.

  3. Saved in your database

    Each run adds dated rows, so this week sits next to last week. Rows are kept for 90 days.

  4. Use it your way

    Open the table in the web app and download the latest run as an Excel file. Ask your own AI assistant about it. Or pull the rows into your code with an API key.

Ask your AI assistant about your own data

Connect Claude Desktop or Claude Code with a read-only key. The assistant reads the rows you've already collected, at no extra cost on Scrapewise. With a full-access key it can start a run for you too.

  • Which of my ASINs lost the Buy Box this week?
  • Which competitor cut prices the most since Monday?
  • Show the keywords where I dropped out of the top 10.

What you send and what you get

You send a link and a column list. Everything else — market, currency, which products are on the page — comes from the page, so there is nothing to configure twice.

You give
  • Link to a Fruugo pagerequired

    Open the product or category page in your browser and copy the address. Any Fruugo country domain works the same way.

    https://www.fruugo.com/
  • Your column listrequired

    Field name, type and one line of plain English per column. Written once, reused on every run.

    product_title, seller_name, price, currency
  • How often it runsoptional

    Hourly, daily, weekly or on demand through the API. Daily is what most price monitoring uses.

    Daily at 06:00 UTC
You get

One row per listing, 11 columns each

  • product_title
  • seller_name
  • price
  • currency
  • shipping_cost
  • availability
  • rating
  • review_count
  • is_featured_offer
  • product_url
  • checked_at

REST API, CSV or Excel. The column set stays the same between runs, so downstream jobs do not re-map fields.

The columns a Fruugo run comes back with

We are not going to print a table of invented marketplace prices and call it real output. Fruugo answers an ordinary request with Cloudflare rather than a product page, so we have no run of our own to quote from. So what is published here is the column list you declare before the run, which is the same list every run comes back with.

product_titleListing title as the seller wrote it
seller_nameWhich seller this price belongs to
pricePrice this seller is charging today
currencyCurrency the page quoted
shipping_costDelivery charge shown for this listing
availabilityWhether the listing is in stock
ratingAverage rating, where the page shows one
review_countHow many reviews back that rating
is_featured_offerWhether this listing is the one the page defaults to
product_urlLink back to the page the row came from
checked_atWhen this run collected the page (UTC)

Every column here is one you name yourself in the schema. If a field is not on the page on the day of the run, it comes back empty rather than guessed.

What a Fruugo page costs

Pay-as-you-go from your wallet. No plan, no monthly fee, no seat count.

€3.75per 1,000 pagespay-as-you-go, no plan

Measured on 3 October 2026, not assumed. A plain request for a fruugo.com page is refused with HTTP 403 by Cloudflare, and so is the bare homepage, which rules out a bad path as the explanation. Clearing that needs both a real browser and a residential exit.

Worked example

500 Fruugo pages checked once a day for a month is 15,000 pages.

about EUR 56.25 for the month

You are charged for what a run actually used, not what it was expected to need, and your balance never expires.

See the full price list →

What this page is not promising

We would rather say this here than in a support ticket.

  • No dedicated Fruugo endpoint

    There is no Fruugo API in our catalogue and no pre-built Fruugo schema. The AI scraper reads the page you point it at — that is the whole mechanism, and it is why it works on pages nobody built a connector for.

  • Nothing behind a login

    It reads what a visitor can see. Account pricing, contract pricing and anything behind a sign-in are out of scope.

  • No field the page does not show

    If the page does not print it, the scraper cannot return it. Identifiers like EAN or GTIN only come back where the retailer publishes them.

  • A price is a point in time

    Every row carries the timestamp of the run that collected it. A price without one is not evidence, which is why the column is in the default schema.

  • Fruugo has one specific trap

    Currency and price both follow the destination market in the URL, so a run that does not pin the market records a price converted for the wrong country.

  • Not a bulk dump of the catalogue

    You give it the URLs you care about. It does not crawl fruugo.com end to end, and a schedule that tried to would cost more than the answer is worth.

Typical fields the AI scraper extracts from a Fruugo page

Treat this as a starting point rather than a fixed schema. What comes back is whatever the page actually shows on the day of the run.

Who owns the price

The distinction that makes marketplace data usable: the same product page can carry a dozen prices from a dozen sellers.

  • Seller name as the listing shows it
  • Whether this is the offer the page defaults to
  • Seller rating and feedback count, where shown
  • Number of other offers on the same product
  • Fulfilment or delivery promise shown next to the price

The landed price

A headline price that excludes delivery is not comparable across sellers, and on a marketplace it usually does.

  • Price shown on the listing
  • Delivery charge shown for this seller
  • Any strike-through or was-price the page prints
  • Promotion or voucher wording
  • Currency and market the price belongs to

Listing identity

Marketplaces issue their own product and listing identifiers, which is the most reliable thing on the page to key a comparison on.

  • Listing title
  • Site's own product or offer identifier
  • Brand, where the listing declares one
  • GTIN or EAN, where the listing publishes one
  • Category breadcrumb
  • Product image URLs

The column list is one you write: name each field, give it a type and a line telling the AI what to look for. The schema belongs to your run, not to us. How Custom Schema works →

What it cannot give you If a field is not visible on the page, the scraper cannot invent it. Identifiers such as EAN or GTIN only come back when Fruugo publishes them.

What people use Fruugo data for

01

Watching who undercuts you on your own listings

If you sell here, the useful question is not what the page says but which seller is currently winning the default offer and by how much. That is a seller column next to a price column, read daily.

02

Unauthorised-reseller detection

Brands usually find out their product is being sold below their own floor by accident. A daily sweep of your own products with the seller name attached turns that into a report instead of a surprise.

03

Assortment and gap research

What a category actually carries, at what price points, from how many sellers. A few weeks of scraped listing data answers that before you commit to a range.

04

Price floor enforcement

You already know your minimum advertised price. What you do not have is a list of listings below it, with the seller and the date, which is the evidence a channel conversation needs.

05

Feeding your own repricing rules

The export is a normal REST API or CSV, so it drops into whatever repricing logic you already run. We supply the observation; your rules decide what to do with it.

What makes Fruugo harder than an ordinary storefront

Here is what the scraper is actually up against on fruugo.com, measured rather than assumed.

Access

  • Plain HTTP requests are refused at the edge — a naive fetch returns HTTP 403, not a page
  • Named protection on the response: Cloudflare
  • No usable sitemap directive in robots.txt, so the URL list comes from your own category pages

One page, many prices

  • The same product page carries several sellers' offers, so a single price column is ambiguous without a seller column
  • Which offer the page shows first changes through the day, independently of any price changing
  • Delivery cost is often where the real competition happens and is quoted separately from the price
  • Listing pages are lazily loaded and paginated, so a category sweep is a list of URLs rather than one request

What the page publishes

  • No product-level structured data is published, so every field is read off the rendered page
  • Currency and price both follow the destination market in the URL, so a run that does not pin the market records a price converted for the wrong country.
  • Price is one of the last things the page settles on, so a read taken too early records the placeholder rather than the number

Keeping a history

  • A single read is a snapshot; the value is in the series, which means the run has to be scheduled and the rows kept
  • Every row carries the timestamp of the run that produced it, so two days can be compared without guesswork
  • Columns stay stable between runs, so a dashboard written once does not break when the site redesigns
FAQ

Fruugo scraping — questions

What people ask before pointing the scraper at fruugo.com.

Fruugo publishes no read API for its catalogue. There is no key to apply for and no endpoint to call, which is why the page is the interface.

Ready to pull Fruugo data into your stack?

Start free — or talk to our team about your exact fields, refresh cadence and volume.