WebPerception API renders any page, extracts structured SEO data, and handles anti-bot protections. Build SERP trackers, content monitors, and site audits without managing browser infrastructure.
Start Free — 100 calls/month View API DocsMonitoring search results and competitor content requires reliable, scalable page rendering.
Google, Bing, and other search engines update result layouts frequently. Scrapers that rely on fixed CSS selectors break within weeks.
Search engines and competitor sites use CAPTCHAs, rate limiting, and fingerprinting. Managing proxies and browser profiles is a full-time job.
Modern sites (SPAs, React/Next.js) render content client-side. Simple HTTP requests miss critical SEO elements like dynamic titles, meta tags, and structured data.
Pass any URL — SERP page, competitor blog, product listing
We render JavaScript, handle anti-bot, execute the full page
Describe what you want in plain English — get structured JSON
Schedule calls, diff results, alert on ranking changes
import requests
# Track your rankings for a target keyword
response = requests.post("https://api.mantisapi.com/v1/extract", json={
"url": "https://www.google.com/search?q=web+scraping+api",
"prompt": "Extract all organic search results. For each result return: position, title, url, and snippet.",
"render_js": True
}, headers={"Authorization": "Bearer YOUR_API_KEY"})
results = response.json()["data"]
for r in results:
if "mantisapi.com" in r.get("url", ""):
print(f"🎯 Ranking #{r['position']}: {r['title']}")
else:
print(f" #{r['position']}: {r['url']}")
import requests
# Extract SEO signals from a competitor page
response = requests.post("https://api.mantisapi.com/v1/extract", json={
"url": "https://competitor.com/blog/web-scraping-guide",
"prompt": """Extract SEO data from this page:
- title tag
- meta description
- h1, h2, h3 headings (list all)
- word count (approximate)
- internal links count
- external links count
- schema markup types present""",
"render_js": True
}, headers={"Authorization": "Bearer YOUR_API_KEY"})
seo_data = response.json()["data"]
print(f"Title: {seo_data['title_tag']}")
print(f"Word count: {seo_data['word_count']}")
print(f"Headings: {len(seo_data['headings'])} total")
100 free API calls per month. No credit card required. Full JavaScript rendering + AI extraction.
Get Your API Key Read the Docs