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.
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:
List prices, sale prices, bundles, coupon codes and shipping costs, in each country you sell in.
New SKUs, discontinued products, restocks and out-of-stock flags across category pages.
New product pages, homepage and landing-page copy, and campaign pages as they go live.
Star ratings and review counts on competitor products and marketplace listings.
The problem
Competitor sites
The solution
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.
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.
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.
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.
Store the date, URL, price and stock. Report only what changed, like a new price, a stock change or a new product.
Daily suits most retail. Check hourly for flash sales and marketplaces. Send changes to Slack or email so someone acts on them.
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
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"
}
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.
| Retailer | Product | Price | Stock |
|---|---|---|---|
| Amazon | AirPods Pro 3 | $199.00 | In stock |
| Best Buy | AirPods Pro 3 | $199.99 | In stock |
| Walmart | AirPods Pro 3 | $199.00 | In stock |
| Amazon | Nintendo Switch 2 | $499.00 | In stock |
| Best Buy | Nintendo Switch 2 | $499.99 | In stock |
| Walmart | Nintendo Switch 2 | $499.00 | In stock |
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.
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.
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.
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?
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.
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.
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.
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.
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.