Extract competitor pricing, product features, hiring signals, funding news, and market trends. WebPerception renders any page and returns structured data — no scraping infrastructure needed.
Start Free — 100 calls/month View API DocsYour competitors publish pricing changes, new features, and job postings daily. You can't monitor it all manually.
Analysts spend 60%+ of their time collecting data instead of analyzing it. Copy-pasting from websites is soul-crushing and error-prone.
Competitor sites, review platforms, and job boards use anti-bot protections. Simple HTTP requests get blocked or return incomplete data.
Even when you can access pages, the data is trapped in HTML. Extracting structured fields from diverse page layouts requires constant maintenance.
WebPerception turns any URL into structured competitive data with one API call.
import requests
competitors = [
"https://competitor-a.com/pricing",
"https://competitor-b.com/plans",
"https://competitor-c.io/pricing"
]
for url in competitors:
response = requests.post("https://api.mantisapi.com/v1/extract", json={
"url": url,
"prompt": """Extract all pricing tiers. For each tier return:
- plan name
- monthly price
- annual price (if shown)
- key features (list)
- API call limits or usage limits
- who it's targeted at (individual/team/enterprise)""",
"render_js": True
}, headers={"Authorization": "Bearer YOUR_API_KEY"})
pricing = response.json()["data"]
print(f"\n{url}:")
for tier in pricing["tiers"]:
print(f" {tier['plan_name']}: ${tier['monthly_price']}/mo")
import requests
# Hiring = growth signal. Track competitor job postings.
response = requests.post("https://api.mantisapi.com/v1/extract", json={
"url": "https://competitor.com/careers",
"prompt": """Extract all open job positions. For each return:
- job title
- department (engineering, sales, marketing, etc.)
- location (remote/city)
- seniority level""",
"render_js": True
}, headers={"Authorization": "Bearer YOUR_API_KEY"})
jobs = response.json()["data"]["positions"]
eng_roles = [j for j in jobs if j["department"] == "engineering"]
sales_roles = [j for j in jobs if j["department"] == "sales"]
print(f"Engineering: {len(eng_roles)} open roles (building)")
print(f"Sales: {len(sales_roles)} open roles (scaling)")
100 free API calls per month. Full JavaScript rendering. AI-powered structured extraction. No proxy management.
Get Your API Key Read the Docs