```yaml
product: AlterLab
title: "Server-Side Rendering — Web Scraping Glossary | AlterLab"
comparison_context: "AlterLab is an alternative to Firecrawl, ScrapingBee, and Bright Data."
source_url: https://alterlab.io/glossary/server-side-rendering
```

browser

# Server-Side Rendering

Server-side rendering (SSR) generates HTML on the server for each request, delivering fully populated markup to the client without requiring JavaScript execution — making content directly accessible to HTTP scrapers.

In SSR, the web server generates a complete HTML document — with all content populated — and sends it to the browser. The browser renders the HTML immediately, providing fast initial load and making all content visible to crawlers and scrapers that only fetch the HTML source. This contrasts with client-side rendering (CSR/SPA), where the server sends a minimal HTML shell and JavaScript populates the content after execution.

For scrapers, SSR pages are the easiest to work with: fetch the URL with an HTTP client and parse the HTML — no JavaScript execution required. Next.js, Nuxt.js, and SvelteKit support SSR as a rendering mode. Many e-commerce and news sites use SSR for product and article pages to ensure content is indexed by search engine crawlers.

AlterLab's Tier 1 engine (HTTP-only) is sufficient for SSR pages. When a site migrates from SSR to CSR/SPA without notice, scrapers begin receiving empty HTML shells and must be upgraded to a browser-based tier.

### What is Server-Side Rendering?

Server-side rendering (SSR) generates HTML on the server for each request, delivering fully populated markup to the client without requiring JavaScript execution — making content directly accessible to HTTP scrapers.

### How does AlterLab handle Server-Side Rendering?

AlterLab's Tier 1 engine (HTTP-only) is sufficient for SSR pages. When a site migrates from SSR to CSR/SPA without notice, scrapers begin receiving empty HTML shells and must be upgraded to a browser-based tier.

## Examples

```
# SSR page: plain HTTP fetch is sufficient — content is in the HTML
import requests
from bs4 import BeautifulSoup

response = requests.get("https://ssr-site.com/product/123")
soup = BeautifulSoup(response.text, "html.parser")
price = soup.select_one(".product-price")
print(price.text if price else "Not found")
```

## Related Terms

[JavaScript RenderingThe process of executing a page's JavaScript in a browser engine before extracting content, required for React, Vue, and Angular SPAs.](https://alterlab.io/glossary/javascript-rendering)[SPA ScrapingSPA scraping targets Single-Page Applications, where the HTML shell is static but all content is rendered by JavaScript after the initial page load.](https://alterlab.io/glossary/spa-scraping)[Dynamic ContentPage content generated client-side by JavaScript after the initial HTML is served, requiring a browser engine to render.](https://alterlab.io/glossary/dynamic-content)[Headless BrowserA web browser that runs without a graphical user interface, executing JavaScript and rendering pages exactly as a real browser would.](https://alterlab.io/glossary/headless-browser)[DOM (Document Object Model)The tree-structured programmatic representation of a web page that JavaScript manipulates to create dynamic content.](https://alterlab.io/glossary/dom)

## Extract Server-Side Rendering data from any website

AlterLab returns clean, structured data from any public URL — no scraper infrastructure needed. Start free, no credit card required.

[View API docs](https://alterlab.io/docs/api/rest)

[Back to Glossary](https://alterlab.io/glossary)