NewLaunching String Web Access APIRead the manifesto →

How to monitor competitor prices and stock

The String Web Access API is the best way to monitor competitor prices. It returns any product page, or just its price and stock as JSON, even on retail sites that block scrapers, like Amazon, Walmart and Best Buy. It returned 97% of requests across 100 bot-protected sites in our September 2026 benchmark, the most of 16 providers.

The first 5,000 requests are free. Set it up in one step with the quickstart.

Why monitor competitors?

Competitor prices, stock and listings change every week, and on large retail sites often every day. A competitor monitor checks those pages on a schedule and tells you what changed. It answers the questions most teams care about:

  • What are competitors charging? Shoppers compare prices. If a competitor undercuts you, you lose sales until you notice.
  • What do they have in stock, and where? When a competitor sells out, its customers shop elsewhere. That's your chance to win them.
  • Where are you winning and losing? Without this, a drop in sales has no clear cause. With it, you know whether it was price or stock.

What you can monitor

Prices and promotions

List prices, sale prices, bundles, coupon codes and shipping costs, in each country you sell in.

Assortment and stock

New SKUs, discontinued products, restocks and out-of-stock flags across category pages.

Launches and landing pages

New product pages, homepage and landing-page copy, and campaign pages as they go live.

Reviews and ratings

Star ratings and review counts on competitor products and marketplace listings.

The problem

Why does competitor monitoring break?

  • Retail sites block scrapers. In our September 2026 benchmark, 12 of the 15 other scraping APIs couldn't fetch bestbuy.com on every attempt. String got all 5. See how 8 APIs did on 43 retail sites in the best e-commerce scraping APIs. A script that works once usually breaks when it runs every day.
  • Blocked pages can look real. The page loads with no price on it, and your tracker saves the gap as data.

Competitor sites

StringOne API
FetchSearch SitemapsBrowser
Your monitor

The solution

Why do teams choose String?

  • It works where others fail. String returned 97% of requests across 100 bot-protected sites in our September 2026 benchmark, the most of 16 providers.
  • You pay only for pages that come back. Blocks and errors are free.
  • There's nothing to maintain. No proxies, fingerprints or captcha solvers on your side.
  • Blank pages don't become data. Mark the price as required in your schema, and a page that comes back without one is flagged instead of saved as an empty price.

How do I set up a competitor price monitor?

  1. List the pages to watch

    Pick the competitor product pages that match yours. Match products by model number, not by URL or retailer SKU. Retailers change SKUs, and a new listing can look like a price change.

    With String: The sitemap endpoint lists every URL on a competitor's domain.

  2. Fetch each page

    Fetch every page with the same settings on every run, so a change in the data means a change on the page.

    With String: Blocked requests are retried, and you don't pay for the ones that fail. Set countryCode to see a store in another country.

  3. Read the price from the product data

    Most retail pages include schema.org Product data with the name, price and availability. It's more reliable than the visible page, and it survives redesigns that break CSS selectors.

  4. Treat a blank page as a failure

    A page with no price was probably blocked or changed. Flag it and keep the last good price, so the gap never gets saved as data.

  5. Save each run and compare it to the last

    Store the date, URL, price and stock. Report only what changed, like a new price, a stock change or a new product.

  6. Run it on a schedule

    Daily suits most retail. Check hourly for flash sales and marketplaces. Send changes to Slack or email so someone acts on them.

Quickstart

From your agent

Add the hosted MCP server to Claude, Cursor, ChatGPT or any MCP client. Then give your agent a product URL. It calls the web_access_fetch tool and reads the price.

https://mcp.usestring.ai/v1/mcp

From the API

One call returns the product, price and stock as JSON. If the page has no price, you get "extracted": false back instead of a guess.

curl https://request.usestring.ai/v1/fetch \
  -H "Authorization: Bearer $STRING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://www.bestbuy.com/product/apple-airpods-pro-3-wireless-active-noise-cancelling-earbuds-with-heart-rate-sensing-feature-white/JJGCQLYK5F",
    "countryCode": "US",
    "jsonSchema": {
      "type": "object",
      "properties": {
        "product": { "type": "string" },
        "price": { "type": "number" },
        "in_stock": { "type": "boolean" },
        "retailer": { "type": "string" }
      },
      "required": ["product", "price", "in_stock"]
    }
  }'

Response

{
  "product": "Apple - AirPods Pro 3, Wireless Active Noise Cancelling Earbuds with Heart Rate Sensing Feature - White",
  "price": 199.99,
  "in_stock": true,
  "retailer": "Best Buy"
}

Get a free sample feed

Tell us which competitors and products you watch. We'll run String on their pages and email you a sample feed of their prices and stock, free.

Request a free sample feed
What a feed looks like
RetailerProductPriceStock
AmazonAirPods Pro 3$199.00In stock
Best BuyAirPods Pro 3$199.99In stock
WalmartAirPods Pro 3$199.00In stock
AmazonNintendo Switch 2$499.00In stock
Best BuyNintendo Switch 2$499.99In stock
WalmartNintendo Switch 2$499.00In stock

Frequently asked questions

What's the best way to monitor competitor prices?

Fetch each competitor product page on a schedule and read the price from the page's product data. The hard part is getting the page at all, because retail sites block most scrapers. The String Web Access API returned 97% of requests across 100 bot-protected sites in our September 2026 benchmark, the most of 16 providers. For retail sites specifically, see the best e-commerce scraping APIs.

How do I track Amazon prices automatically?

Fetch each product page (the /dp/ URL) with String once a day and read the price. Use the buy box price for new items. The page also shows the lowest price across new and used offers, which is often lower and isn't what most shoppers pay. The full walkthrough, with code, is in how to scrape Amazon product data.

How often should I check competitor prices, and what does it cost?

Daily suits most retail. Check hourly for flash sales and marketplaces, where prices move during the day. Checking 1,000 products daily is about 30,000 requests a month, which is $9 in usage on the Starter plan ($20 a month, $0.30 per 1,000 standard requests). Pages that need a browser or premium proxies cost more. See pricing. Failed requests aren't billed.

Is it legal to scrape competitor prices?

Prices are facts, and collecting public prices is the best-supported case in scraping law. The real limits are contract terms and antitrust. Stay on public pages, leave personal data out, keep your request rate reasonable, and check with your counsel. We go through the cases in Is it legal to scrape competitor prices?

How do I avoid getting blocked when monitoring competitor sites?

Send each request to String instead of the site. Proxy rotation, browser fingerprints, captcha solving and retries happen behind the endpoint, and JavaScript rendering is switched on per request for pages that need it. Requests that still fail aren't billed.

Can I see the prices shoppers see in other countries?

Yes, String can show the local prices. Set countryCode on each request and String fetches the page from that country, so you get its local prices, currency and stock.

How do I find every product page on a competitor's site?

Run a sitemap crawl on the competitor's domain to list its URLs, then fetch the product and category pages you want to watch. To find pages by keyword, the /search endpoint returns live Google results.

Can I monitor pages that only load after a click?

Yes, String can reach pages that load after a click. For pages that need interaction, like picking a store or opening a size menu, connect Playwright or Puppeteer to String's remote browser over CDP. Pages that don't need it stay on the cheaper fetch path.

Does String work on the competitor sites I need?

Send us the URLs and we'll run them and show you what comes back before you commit. Ask for a free sample feed, or test them yourself with your first 5,000 free requests.

Send us the sites you can't get.

We'll show you what comes back.

© 2026 StringEU and UK GDPR Article 27 representative — appointment verified by EuverifyBuilt in New York City 🗽 🍎