Skip to content
Use cases

Prices from the portals you already have access to

Distributor price lists, contract prices, availability: they sit behind a login you own. A scheduled extraction reads them as structured data and posts the result to your pricing system.

What this is for

The honest boundary first: this is price monitoring on sites where you are the customer. It is not a scraper for competitors’ shops that block bots.

Distributor and wholesale portals
Your net prices and stock levels per article live in the distributor’s portal, usually with no export. Extracting the list daily gives purchasing a feed instead of a screenshot.
Contract price verification
Framework agreements promise prices; portals show what is actually charged. Reading both on a schedule finds the drift before the invoice does.
Your own shop, as a customer sees it
Checking your own storefront across regions and accounts is a legitimate reason to drive a browser. Region and locale are session settings, not tricks.
Not for adversarial scraping
No proxies, no fingerprint spoofing, no CAPTCHA solving. If a site works to keep automation out, Browserberg is the wrong tool and says so.

Why the numbers can be trusted

Schema first


You declare the shape: article number, unit price, currency, stock. The extraction returns exactly that shape, and reports fields it could not find rather than guessing.

Provenance on every value


Each run records which model tier produced the extraction and where it was processed, so a price that later looks wrong can be traced to the run and the page that produced it.

Same page, same reading


A run executes the workflow version it was started with. Publishing a change never alters a run in flight, and old versions stay readable.

Logged-in state that survives


A persistent profile carries the portal session between runs where the portal allows it, so a daily job does not sign in daily.

Daily price list extraction

import { Browserberg } from '@browserberg/sdk';

const bb = new Browserberg({
  apiKey: process.env.BROWSERBERG_API_KEY,
  baseUrl: 'https://browserberg.com',
});

const wf = await bb.workflows.publish({
  title: 'Distributor net prices',
  blocks: [
    { blockType: 'login', label: 'Sign_in', credentialId: 'cred_distributor' },
    { blockType: 'navigation', label: 'Open_pricelist', url: 'https://b2b.distributor.example/pricelist?category=cables' },
    { blockType: 'extraction', label: 'Read_prices',
      instruction: 'every article row: article number, description, net unit price, currency, stock',
      schema: { type: 'object', properties: { articles: { type: 'array', items: { type: 'object',
        properties: { sku: { type: 'string' }, name: { type: 'string' }, net: { type: 'number' },
                      currency: { type: 'string' }, stock: { type: 'integer' } } } } } } },
    { blockType: 'http_request', label: 'Store', method: 'POST',
      url: 'https://pricing.internal.example/feeds/distributor', body: '{{ Read_prices_output }}' },
  ],
});

await bb.triggers.create(wf.workflowId, {
  kind: 'schedule', name: 'Daily at six', cron: '0 6 * * *', timezone: 'Europe/Vienna',
});

Questions purchasing asks

The price list has 40 pages. Does extraction handle paging?

A loop block repeats a navigation and extraction over a list of page URLs or until a condition is met, and each iteration publishes its own output. Keep the schema per page and merge on your side.

Can I monitor a competitor’s public shop?

If the shop permits automated access, a plain extraction works like any other page. If it actively blocks automation, Browserberg will not get you in: there is no stealth tier to buy.

How do I know the run read the right page?

Every run records the URL each block ended on, and the audit log carries the run id. An extraction on a redirected page shows up as the wrong URL, not as a plausible-looking number.

Where is the price data processed?

Extraction runs on the sovereign model tier by default, pinned to an EU region, and the run records that. The browser itself runs on EU bare metal.

Start with one price list

Five browser hours, no card. One distributor portal, one schema, one schedule.