Easily Setup Competitive Website Monitoring with Nimble Web API
.png)
Easily Setup Competitive Website Monitoring with Nimble Web API
When competitors launch a new product, drop a seasonal campaign, or roll out a big promotion, spotting it late can cost you. Traditional scraping might catch changes in text or structured data, but many updates are visual: banners, product images, or homepage layouts. Nimble’s Web API now lets you capture screenshots on demand, making it easy to monitor visual changes over time and trigger alerts the moment something shifts.
Why We Built It
Screenshots are an incredibly useful tool for web scraping. They help debug problems by allowing developers to see what was loaded, which can often explain otherwise strange outputs.
There’s really many use cases for screenshots, but one that has been unexpectedly popular with our customers is competitive website monitoring. It turns out that screenshots are great for this task because they allow us to compare visually - the same way humans look at web pages.
This gets around a lot of the trouble of trying to find changes through HTML, where some changes don’t really affect the user experience at all, while other times there may be changes buried so deep they are hard to find, even though they make a huge difference visuallty.
How to Use It
Capturing a screenshot is as simple as adding a screenshot step to your render flow:
import requests, base64
auth = base64.b64encode(b"user@example.com:your_password").decode()
res = requests.post(
"https://api.webit.live/api/v1/realtime/web",
headers={
"Authorization": f"Basic {auth}",
"Content-Type": "application/json"
},
json={
"url": "https://competitor.com",
"render": True,
"render_flow": [{
"screenshot": {
"full_page": True,
"format": "jpeg",
"timeout": 30000
}
}]
}
)
# Save the screenshot
screenshot_b64 = res.json()["render_flow"][0]["screenshot"]["data"]
with open("competitor_today.jpg", "wb") as f:
f.write(base64.b64decode(screenshot_b64))
This returns a base64-encoded image you can store and compare. You can control the format of the image (we also support PNG and Webp formats) and also whether to capture the full page or just the viewable area.
Real-World Example: Monitoring Competitor Promotions
Imagine you’re a retail brand watching a competitor’s homepage. You want to know the instant they roll out a seasonal campaign. Here’s how you can automate daily comparisons:
from PIL import Image, ImageChops
# Load today’s and yesterday’s screenshots
today = Image.open("competitor_today.jpg")
yesterday = Image.open("competitor_yesterday.jpg")
# Compute the difference
diff = ImageChops.difference(today, yesterday)
if diff.getbbox():
print("Change detected — new campaign or layout live!")
diff.save("visual_diff.jpg")
else:
print("No visual changes detected")
- Day 1: Capture and store the screenshot of their homepage.
- Day 2: Run the same request, then compare the new screenshot against the stored one.
- Result: The system flags a major banner swap — a new “Fall Sale” campaign is live.
With automated screenshot capture and image comparison, your marketing team gets an immediate alert and can respond faster with matching promotions or counter-campaigns.
Best Practices
- Use
full_page: truefor a complete view of layouts and banners. - Store screenshots in S3 or GCS for easy historical comparison.
- Automate daily or hourly runs with batch processing for multiple competitors.
- Save diffs as images for a quick visual audit trail.
Access It Instantly. No Setup Required.
Nimble’s Web API does all the heavy lifting, so you can keep tabs on your competitors with ease.
Get Started →
FAQ
Answers to frequently asked questions
.png)
%20(2).png)












