Type Definition
Copy
interface ScrapeResult {
data: WebsiteScrapeResult[];
batchMetadata: BatchMetadata;
}
WebsiteScrapeResult
Individual result for each URL:Copy
interface WebsiteScrapeResult {
markdown?: string; // Present if "markdown" in formats
html?: string; // Present if "html" in formats
metadata: {
baseUrl: string;
totalPages: number;
scrapedAt: string; // ISO timestamp
duration: number; // Milliseconds
website: WebsiteMetadata;
proxy?: ProxyMetadata;
};
}
WebsiteMetadata
Metadata extracted from the page:Copy
interface WebsiteMetadata {
// Basic meta
title: string | null;
description: string | null;
author: string | null;
language: string | null;
charset: string | null;
// Links
favicon: string | null;
image: string | null;
canonical: string | null;
// SEO
keywords: string[] | null;
robots: string | null;
themeColor: string | null;
// Open Graph
openGraph: {
title: string | null;
description: string | null;
type: string | null;
url: string | null;
image: string | null;
siteName: string | null;
locale: string | null;
} | null;
// Twitter Card
twitter: {
card: string | null;
site: string | null;
creator: string | null;
title: string | null;
description: string | null;
image: string | null;
} | null;
}
BatchMetadata
Metadata about the batch operation:Copy
interface BatchMetadata {
totalUrls: number;
successfulUrls: number;
failedUrls: number;
scrapedAt: string; // ISO timestamp
totalDuration: number; // Milliseconds
errors?: Array<{
url: string;
error: string;
}>;
}
ProxyMetadata
Proxy information (if proxy was used):Copy
interface ProxyMetadata {
host: string;
port: number;
country?: string;
}
Examples
Access Content
Copy
const result = await reader.scrape({
urls: ["https://example.com"],
formats: ["markdown", "html"],
});
// Access content
console.log(result.data[0].markdown);
console.log(result.data[0].html);
Access Metadata
Copy
const result = await reader.scrape({
urls: ["https://example.com"],
});
const metadata = result.data[0].metadata;
console.log("URL:", metadata.baseUrl);
console.log("Duration:", metadata.duration, "ms");
console.log("Title:", metadata.website.title);
console.log("Description:", metadata.website.description);
if (metadata.website.openGraph) {
console.log("OG Image:", metadata.website.openGraph.image);
}
Check Batch Status
Copy
const result = await reader.scrape({
urls: ["https://example.com", "https://example.org"],
});
const { batchMetadata } = result;
console.log("Total:", batchMetadata.totalUrls);
console.log("Success:", batchMetadata.successfulUrls);
console.log("Failed:", batchMetadata.failedUrls);
console.log("Duration:", batchMetadata.totalDuration, "ms");
if (batchMetadata.errors) {
console.log("Errors:");
batchMetadata.errors.forEach((e) => {
console.log(` ${e.url}: ${e.error}`);
});
}
Iterate Results
Copy
const result = await reader.scrape({
urls: ["https://example.com", "https://example.org", "https://example.net"],
});
result.data.forEach((page, i) => {
console.log(`[${i + 1}] ${page.metadata.website.title}`);
console.log(` URL: ${page.metadata.baseUrl}`);
console.log(` Duration: ${page.metadata.duration}ms`);
console.log(` Content: ${page.markdown?.substring(0, 100)}...`);
});

