Skip to main content

Recipe

This recipe shows how to chain API executions by extending a job’s payload within your code using Intuned’s extendPayload (TypeScript) or extend_payload (Python) helper.
TypeScript
import { extendPayload } from "@intuned/runtime";
import { BrowserContext, Page } from "playwright-core";

export default async function handler(
  params: any,
  page: Page,
  context: BrowserContext
) {
  await page.goto("https://books.toscrape.com/");

  const bookTitles: { title: string }[] = [];

  // Scraping book titles
  const bookLocators = page.locator("ol li");
  const count = await bookLocators.count();

  const allLocators = await bookLocators.all();

  for (const bookLocator of allLocators) {
    const titleLocator = bookLocator.locator("h3");
    const txt = (await titleLocator.textContent())?.trim();

    const detailsUrlLocator = bookLocator.locator("div.image_container a");
    const href = await detailsUrlLocator.getAttribute("href");
    const detailsUrl = "https://books.toscrape.com" + href;

    if (txt) {
      bookTitles.push({ title: txt });
     
    }
    // Extending payload
    extendPayload({
        api: "details",
        parameters: { url: detailsUrl },
      });
  }
}