Spidra 0.1.0

dotnet add package Spidra --version 0.1.0
                    
NuGet\Install-Package Spidra -Version 0.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Spidra" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Spidra" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="Spidra" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Spidra --version 0.1.0
                    
#r "nuget: Spidra, 0.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Spidra@0.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Spidra&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=Spidra&version=0.1.0
                    
Install as a Cake Tool

Spidra .NET SDK

Official .NET SDK for Spidra — AI-powered web scraping with proxy rotation and CAPTCHA handling.

Installation

dotnet add package Spidra

Quick start

using Spidra;
using Spidra.Types.Scrape;

var client = new SpidraClient(Environment.GetEnvironmentVariable("SPIDRA_API_KEY")!);

var job = await client.Scrape.RunAsync(new ScrapeParams
{
    Urls = [new ScrapeUrl("https://news.ycombinator.com")],
    Prompt = "List the top 5 stories with title, points, and comment count",
    UseProxy = true
});

Console.WriteLine(job.Result.Content);

Structured output

using System.Text.Json;
using Spidra.Types.Scrape;

var job = await client.Scrape.RunAsync(new ScrapeParams
{
    Urls = [new ScrapeUrl("https://jobs.example.com/senior-engineer")],
    Prompt = "Extract the job title, company, location, and required skills",
    Output = OutputFormat.Json,
    UseProxy = true,
    Schema = JsonSerializer.SerializeToElement(new
    {
        type = "object",
        required = new[] { "title", "company" },
        properties = new
        {
            title = new { type = "string" },
            company = new { type = "string" },
            location = new { type = new[] { "string", "null" } },
            skills = new { type = "array", items = new { type = "string" } }
        }
    })
});

var listing = job.Result.Content.Deserialize<JobListing>(new JsonSerializerOptions
{
    PropertyNameCaseInsensitive = true
});

record JobListing(string Title, string Company, string? Location, List<string> Skills);

Batch scraping

using Spidra.Types.Batch;

var batch = await client.Batch.RunAsync(new BatchScrapeParams
{
    Urls =
    [
        "https://competitor-a.com/pricing",
        "https://competitor-b.com/pricing"
    ],
    Prompt = "Extract all pricing plans with name and monthly price",
    Output = OutputFormat.Json,
    UseProxy = true
});

foreach (var item in batch.Items.Where(i => i.Status == "completed"))
{
    Console.WriteLine($"{item.Url}: {item.Result}");
}

Site crawling

using Spidra.Types.Crawl;

var job = await client.Crawl.RunAsync(new CrawlParams
{
    BaseUrl = "https://example.com/blog",
    CrawlInstruction = "Find all blog posts published in 2024",
    TransformInstruction = "Extract title, author, publish date, and summary",
    MaxPages = 30,
    UseProxy = true
});

foreach (var page in job.Result)
{
    Console.WriteLine($"{page.Url}: {page.Data}");
}

Error handling

using Spidra.Exceptions;

try
{
    var job = await client.Scrape.RunAsync(params);
}
catch (SpidraAuthenticationException)
{
    // Invalid API key
}
catch (SpidraInsufficientCreditsException)
{
    // Out of credits — upgrade at spidra.io
}
catch (SpidraRateLimitException ex)
{
    // Rate limited — ex.RetryAfter has the suggested wait time
    await Task.Delay(ex.RetryAfter ?? TimeSpan.FromSeconds(5));
}
catch (SpidraServerException)
{
    // 5xx from the API
}
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0 101 4/23/2026