Lightweight ScraperAPI client for .NET. Web scraping with automatic proxy rotation, CAPTCHA solving, and JavaScript rendering. Scrape any website without getting blocked. Features: async scraping, screenshots, country targeting, session management, auto-parsing, structured data extraction.
$ dotnet add package ForeverTools.ScraperAPILightweight ScraperAPI client for .NET. Scrape any website without getting blocked - automatic proxy rotation, CAPTCHA solving, and JavaScript rendering.
dotnet add package ForeverTools.ScraperAPI
Sign up at ScraperAPI to get your API key with 5,000 free credits.
using ForeverTools.ScraperAPI;
var client = new ScraperApiClient("your-api-key");
// Simple scrape
var html = await client.ScrapeAsync("https://example.com");
// With JavaScript rendering (for SPAs)
var rendered = await client.ScrapeWithJavaScriptAsync("https://spa-example.com");
// From a specific country
var usContent = await client.ScrapeFromCountryAsync("https://example.com", "us");
var request = new ScrapeRequest
{
Url = "https://example.com",
RenderJavaScript = true,
CountryCode = "us",
Premium = true,
DeviceType = DeviceTypes.Mobile,
AutoParse = true
};
var response = await client.ScrapeWithResponseAsync(request);
if (response.Success)
{
Console.WriteLine($"Status: {response.StatusCode}");
Console.WriteLine(response.Content);
}
// Get screenshot as base64
var base64 = await client.TakeScreenshotAsync("https://example.com");
// Get screenshot as bytes (for saving to file)
var bytes = await client.TakeScreenshotBytesAsync("https://example.com");
File.WriteAllBytes("screenshot.png", bytes);// Submit job and wait for completion
var response = await client.ScrapeAsyncAndWaitAsync(new ScrapeRequest
{
Url = "https://example.com",
RenderJavaScript = true
});
// Or manage jobs manually
var job = await client.SubmitAsyncJobAsync(request);
Console.WriteLine($"Job ID: {job.Id}");
// Check status later
var status = await client.GetAsyncJobStatusAsync(job.Id);
if (status.IsFinished)
{
Console.WriteLine(status.Response.Body);
}var account = await client.GetAccountInfoAsync();
Console.WriteLine($"Credits remaining: {account.RemainingCredits}");
Console.WriteLine($"Concurrent limit: {account.ConcurrencyLimit}");// Program.cs
builder.Services.AddForeverToolsScraperApi("your-api-key");
// Or with full configuration
builder.Services.AddForeverToolsScraperApi(options =>
{
options.ApiKey = "your-api-key";
options.DefaultRenderJavaScript = true;
options.DefaultCountryCode = "us";
options.TimeoutSeconds = 90;
});
// Or from appsettings.json
builder.Services.AddForeverToolsScraperApi(builder.Configuration);// appsettings.json
{
"ScraperAPI": {
"ApiKey": "your-api-key",
"DefaultRenderJavaScript": true,
"DefaultCountryCode": "us"
}
}// Inject and use
public class PriceScraperService
{
private readonly ScraperApiClient _scraper;
public PriceScraperService(ScraperApiClient scraper)
{
_scraper = scraper;
}
public async Task<string> GetProductPageAsync(string url)
{
return await _scraper.ScrapeWithJavaScriptAsync(url);
}
}// Uses SCRAPERAPI_KEY by default
var client = ScraperApiClient.FromEnvironment();
// Or specify custom variable name
var client = ScraperApiClient.FromEnvironment("MY_SCRAPER_KEY");| Option | Description | Credits |
|---|---|---|
| Basic scrape | Default HTML scraping | 1 |
RenderJavaScript | Execute JavaScript | +10 |
Screenshot | Capture page screenshot | +10 |
Premium | Residential/mobile proxies | +10 |
UltraPremium | Advanced bypass | +30 |
CountryCode | Geo-targeting | +0 |
SessionNumber | Sticky sessions | +0 |
AutoParse | Structured JSON output | +0 |
Common codes: us, uk, de, fr, es, it, br, ca, au, jp, in
ScraperAPI handles the hard parts of web scraping:
If you need standalone proxy access without the scraping features, check out BrightData - the industry leader in proxy services:
| Proxy Type | Best For | Link |
|---|---|---|
| Residential Proxies | General scraping, geo-targeting | Get Started |
| ISP Proxies | High-speed, stable connections | Get Started |
| Social Media Proxies | Instagram, Facebook, TikTok automation | Get Started |
| SERP API | Search engine scraping | Get Started |
MIT License - see LICENSE for details.