Documentation | Python SDK | JavaScript SDK | Playground
Turn any website into LLM-ready clean data.
Scrapester is a powerful web scraping tool that converts website content into clean, markdown-formatted data perfect for LLM processing. With support for both single-page scraping and full website crawling, Scrapester makes it easy to gather web content in a structured, consistent format.
- 🔍 Smart Content Extraction: Automatically removes noise and extracts meaningful content
- 📝 Markdown Output: Clean, structured content perfect for LLMs
- 🕷️ Website Crawling: Scrape entire websites with configurable depth and limits
- 🚀 Multiple SDKs: Official Python and JavaScript support
- ⚡ High Performance: Built for speed and reliability
- 🛡️ Error Handling: Robust error handling and rate limiting protection
pip install scrapesternpm install scrapester
# or
yarn add scrapesterfromscrapesterimportScrapesterApp# Initialize the clientapp=ScrapesterApp(api_key="your-api-key")
# Scrape a single pageresult=app.scrape("https://example.com")
print(result.markdown)
# Crawl an entire websiteresults=app.crawl(
"https://example.com",
options={
"max_pages": 10,
"max_depth": 2
}
)import{ScrapesterApp}from'scrapester';// Initialize the clientconstapp=newScrapesterApp('your-api-key');// Scrape a single pageconstresult=awaitapp.scrape('https://example.com');console.log(result.markdown);// Crawl an entire websiteconstresults=awaitapp.crawl('https://example.com',{maxPages: 10,maxDepth: 2});Scrapester returns clean, structured data in the following format:
interfaceCrawlerResponse{url: string;// The scraped URLmarkdown: string;// Clean, markdown-formatted contentmetadata: {// Page metadatatitle: string,description: string,// ... other meta tags};timestamp: string;// ISO timestamp of when the page was scraped}newScrapesterApp(apiKey: string,baseUrl?: string,// default: "http://localhost:8000"timeout?: number // default: 600 seconds)Scrapes a single URL and returns clean, markdown-formatted content.
Crawls a website starting from the given URL. Options include:
maxPages: Maximum number of pages to crawlmaxDepth: Maximum crawl depthincludePatterns: URL patterns to includeexcludePatterns: URL patterns to exclude
Scrapester provides detailed error information through the APIError class:
classAPIErrorextendsError{statusCode?: number;response?: object;}Common error scenarios:
429: Rate limit exceeded400: Invalid request401: Invalid API key500: Server error
# Python
pytest tests/
# JavaScript
npm test# Python
pip install -e ".[dev]"# JavaScript
npm install
npm run buildWe welcome contributions! Please see our Contributing Guidelines for details.
This project is licensed under the MIT License - see the LICENSE file for details.
