Skip to main content

Recipe

This recipe shows how to scrape data from infinite scroll pages using scrollToLoadContent (TypeScript) or scroll_to_load_content (Python).
TypeScript
import { BrowserContext, Page } from "playwright-core";
import { scrollToLoadContent } from "@intuned/browser";

interface Product {
  name: string;
  price: string;
}

// Extract products from the page
async function extractProducts(page: Page): Promise<Product[]> {
  const results: Product[] = [];
  const productCards = page.locator(".product-item");
  const count = await productCards.count();

  for (let i = 0; i < count; i++) {
    const card = productCards.nth(i);
    const name = await card.locator(".product-name").textContent();
    const price = await card.locator(".product-price").textContent();

    if (name && price) {
      results.push({
        name: name.trim(),
        price: price.trim(),
      });
    }
  }

  return results;
}

export default async function handler(
  params: { maxScrolls?: number },
  page: Page,
  context: BrowserContext
) {
  await page.goto("https://www.scrapingcourse.com/infinite-scrolling");

  // Scroll to load all content
  await scrollToLoadContent({
    source: page,
    maxScrolls: params.maxScrolls ?? 50,
  });

  // Extract all products after content is loaded
  const products = await extractProducts(page);
  console.log(`Extracted ${products.length} products`);

  return products;
}