Examples
A simple SSR page returns the content in the first HTML response, so a normal HTTP request is enough.
curl -L "https://example.com/products/123"
If the page is SSR, you might see the product data directly in the HTML:
<html>
<head><title>Product 123</title></head>
<body>
<h1>Running Shoes</h1>
<div class="price">$89</div>
</body>
</html>
In Python, scraping it is straightforward:
import requests
from bs4 import BeautifulSoup
html = requests.get("https://example.com/products/123").text
soup = BeautifulSoup(html, "html.parser")
name = soup.select_one("h1").get_text(strip=True)
price = soup.select_one(".price").get_text(strip=True)
print({"name": name, "price": price})
If you are using ScrapeRouter, SSR targets are the cheap cases because you often do not need browser rendering at all:
curl "https://www.scraperouter.com/api/v1/scrape/?url=https://example.com/products/123" \
-H "Authorization: Api-Key $api_key"
Practical tips
- Check the raw HTML first. If the data is already there, do not reach for Playwright, Selenium, or any browser tool yet.
- View page source, not just the live DOM in devtools. SSR content is in the original response; CSR content often is not.
- Look for framework hints: Next.js, Nuxt, Remix, and similar stacks often ship SSR or hybrid pages.
- Be careful with modern apps because many are hybrid, not purely SSR or purely CSR: initial HTML on the server, more data loaded later with API calls.
- SSR is easier to scrape, but it does not mean easy in production: rate limits, bot checks, geo issues, and inconsistent markup still show up.
- If you can get the data with a plain request, do that. Browser automation is slower, more expensive, and one more thing to keep alive.
- A quick check in Python:
import requests
url = "https://example.com/products/123"
html = requests.get(url, timeout=30).text
for needle in ["Running Shoes", "$89"]:
print(needle, needle in html)
If the important text is in html, start with HTTP scraping, not browser rendering.
Use cases
- Product pages where title, price, availability, and metadata are already rendered into the response HTML.
- Article pages where the headline, author, publish date, and body arrive fully rendered from the server.
- SEO-heavy sites that render key content server-side so search engines and social previews can read it immediately.
- Monitoring jobs where you want the cheapest stable path: plain requests against SSR pages instead of running a browser fleet.
- Mixed rendering sites where SSR gets you the main record and a follow-up API call gets reviews, inventory, or other dynamic pieces.