JavaScript Rendering Web Scraping API

Scrape dynamic websites built with React, Vue, Angular, Next.js.
Headless Chrome per request. No infrastructure needed.

Scrape JavaScript-rendered pages
without managing browsers!

Unlimited scraping concurrency
Built-in browser & JavaScript rendering
Headless Chrome per request
Wait-for-selector support
Custom JS snippet execution
Rotating proxies & geo-targeting

Scrape React, Next.js, Vue, Angular & More

Modern websites render content client-side using JavaScript frameworks. Our API executes JavaScript just like a real browser, so you get the fully rendered HTML every time.
# Enable browser rendering with browser=true
curl -X GET "https://api.scrapingant.com/v2/general?url=https://spa-example.com&browser=true" \
  -H "x-api-key: YOUR_API_KEY"
Works with any SPA, AJAX-heavy site, or infinite scroll page.

No Selenium or Playwright Needed

Forget about managing browser binaries, Docker containers, or cloud infrastructure. ScrapingAnt handles all the complexity. Just call our API and get rendered HTML back.
No browser management
No Docker or Kubernetes setup
No Puppeteer/Playwright code

Headless Chrome Per Request

Every request with browser=true spins up a fresh Headless Chrome instance. Your target site sees a real browser fingerprint, making detection much harder.
Real browser fingerprint
Fresh session per request
Anti-bot avoidance built-in

Wait for Dynamic Content with wait_for_selector

SPAs and AJAX-heavy pages often load content after the initial page load. Use wait_for_selector to tell ScrapingAnt to wait until a specific element appears before returning the HTML.
Perfect for:
  • Infinite scroll pages
  • Lazy-loaded product listings
  • AJAX-loaded data tables
  • Client-side rendered dashboards
# Wait for element before returning HTML
curl -X GET "https://api.scrapingant.com/v2/general" \
  -d "url=https://spa-app.com/products" \
  -d "browser=true" \
  -d "wait_for_selector=.product-card" \
  -H "x-api-key: YOUR_API_KEY"

Execute Custom JavaScript with js_snippet

Need to click a button, scroll the page, or interact with elements before scraping? Use js_snippet to run your own JavaScript code inside the browser.
import requests
import base64

# JavaScript to scroll and click "Load More"
js_code = """
window.scrollTo(0, document.body.scrollHeight);
document.querySelector('.load-more-btn').click();
"""

response = requests.get(
    "https://api.scrapingant.com/v2/general",
    params={
        "url": "https://example.com/feed",
        "browser": "true",
        "js_snippet": base64.b64encode(js_code.encode()).decode()
    },
    headers={"x-api-key": "YOUR_API_KEY"}
)
The js_snippet parameter accepts base64-encoded JavaScript.

Advanced Browser Options

return_page_source

Get the original HTML as sent by the server, before any JavaScript execution. Useful for comparing rendered vs. raw HTML or debugging.

block_resource

Speed up page loads by blocking images, stylesheets, fonts, or media. Reduce bandwidth and credits while getting the data you need faster.

proxy_type

Choose between datacenter proxies (fast & cheap) or residential proxies (higher success rates) depending on your target site's anti-bot measures.

proxy_country

Access geo-restricted content by routing requests through proxies in specific countries. Perfect for price comparison and localized content scraping.

Get Started in Minutes

cURL

curl -X GET \
  "https://api.scrapingant.com/v2/general\
?url=https://example.com&browser=true" \
  -H "x-api-key: YOUR_API_KEY"

Python

import requests

response = requests.get(
    "https://api.scrapingant.com/v2/general",
    params={
        "url": "https://example.com",
        "browser": "true"
    },
    headers={"x-api-key": "YOUR_API_KEY"}
)
print(response.text)

Node.js

const axios = require('axios');

axios.get('https://api.scrapingant.com/v2/general', {
  params: {
    url: 'https://example.com',
    browser: 'true'
  },
  headers: { 'x-api-key': 'YOUR_API_KEY' }
}).then(res => console.log(res.data));

Ready to Scrape?

Sign up for free and get 10,000 API credits to test JavaScript rendering on your target sites.
Start Free Trial
Pricing

Enthusiast

100.000 API credits

$19
/mo
Ideal for freelancers or students.
Get Started
Email support
Documentation-only integration

Startup

500.000 API credits

$49
/mo
For small to medium sized teams looking to grow.

Popular choice!
Get Started
Priority email support
Expert assistance
Integration with custom code snippets

Business

3.000.000 API credits

$249
/mo
For larger teams and companies.
Get Started
Priority email support
Live integration calls
Expert guidance and integration planning
Custom proxy pools
Custom avoidances
Dedicated manager

Business Pro

8.000.000 API credits

$599
/mo
Extended volume Business plan.
Get Started
Priority email support
Live integration calls
Expert guidance and integration planning
Custom proxy pools
Custom avoidances
Dedicated manager

Custom Plan

10M+ API credits

$699+
/mo
Explore custom deals and services we could provide for Enterprise level customers.
Contact us
Fully customisable solution
Residential Proxy special prices
SLA
★ ★ ★ ★ ★

"Onboarding and API integration was smooth and clear. Everything works great. The support was excellent. Overall a great scraper."

Illia K., Android Software Developer
★ ★ ★ ★ ★

"Great communication with co-founders helped me to get the job done. Great proxy diversity and good price."

Andrii M., Senior Software Engineer
★ ★ ★ ★ ★

"This product helps me to scale and extend my business. The API is easy to integrate and support is really good."

Dmytro T., Senior Software Engineer

Frequently asked questions.

If you have any further questions, Get in touch with our friendly team
What do I get back from a JavaScript rendering request?

When you use browser=true, ScrapingAnt returns the fully rendered HTML after all JavaScript has executed. This includes dynamically loaded content, AJAX responses, and any DOM modifications made by client-side scripts. You get the same HTML you'd see if you opened "View Source" in a real browser after the page finished loading.

How long can a rendered request run?

By default, browser rendering requests have a timeout of 30 seconds. If you need more time (for complex SPAs or slow-loading pages), you can use the timeout parameter to extend this up to 180 seconds. Combined with wait_for_selector, you can ensure all content loads before the response is returned.

Can I turn browser rendering off?

Yes. By default, browser=false, which means requests use simple HTTP fetching without JavaScript execution. This is faster and uses fewer API credits. Only enable browser=true when your target site requires JavaScript rendering to display the content you need.

How many API credits does JavaScript rendering cost?

Requests with browser=true cost 10 API credits by default (with standard proxies). Using residential proxies with browser rendering costs 125 credits per request. You can reduce costs by using block_resource to skip loading unnecessary assets like images and stylesheets.

What's the difference between ScrapingAnt and running my own Puppeteer/Playwright?

With ScrapingAnt, you don't need to manage browser binaries, handle crashes, configure proxies, or scale infrastructure. We handle all of that. You just call our API and get rendered HTML back. Plus, our system automatically rotates proxies and handles anti-bot detection, which would require significant additional work with self-hosted solutions.

"Our clients are pleasantly surprised by the response speed of our team."

Oleg Kulyk,
ScrapingAnt Founder
* Our team will contact you ASAP.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
By browsing this site, you agree to our Cookies Policy