Amazon Scraper API

Go modules - Go 1.21+

Go SDK

Idiomatic Go client with context-aware cancellation, channel-based batch streaming, and zero-dependency core. Built for high-throughput pipelines and Kubernetes workloads.

Quick start

1. Install

go get github.com/ChocoData-com/amazon-scraper-api-sdk-go

2. Scrape your first ASIN

package main

import (
    "context"
    "fmt"
    "log"

    asa "github.com/ChocoData-com/amazon-scraper-api-sdk-go"
)

func main() {
    client := asa.New(asa.WithAPIKey("asa_live_..."))

    product, err := client.Products.Get(context.Background(), "B08N5KWBKK", asa.WithDomain("com"))
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(product.Title, product.Price, product.Rating)
}

How-to

Search Amazon

results, err := client.Search.Run(ctx, asa.SearchParams{
    Query:  "wireless earbuds",
    Domain: "com",
    Pages:  3,
})

for _, r := range results {
    fmt.Println(r.Position, r.ASIN, r.Title, r.Price)
}

Channel-based batch streaming

asins := []string{"B08N5KWBKK", "B0DZ7871B8" /* up to 1000 */}

batch, err := client.Batch.Create(ctx, asa.BatchParams{
    ASINs:  asins,
    Domain: "com",
})
if err != nil {
    log.Fatal(err)
}

// Stream results as they complete
for r := range client.Batch.Stream(ctx, batch.ID) {
    fmt.Println(r.ASIN, r.Title, r.Price)
}

Context cancellation for timeouts

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()

product, err := client.Products.Get(ctx, "B08N5KWBKK")
if errors.Is(err, context.DeadlineExceeded) {
    // request timed out cleanly; the in-flight HTTP call was canceled
}

Handle errors and retry

client := asa.New(
    asa.WithAPIKey("asa_live_..."),
    asa.WithMaxRetries(3),       // retries on 429 + 5xx
    asa.WithBackoff(asa.ExponentialBackoff(time.Second)),
)

var rateErr *asa.RateLimitError
if errors.As(err, &rateErr) {
    log.Printf("hit limit, retry after %v", rateErr.RetryAfter)
}

Why use the SDK over net/http?

Idiomatic Go

Functional options, context.Context on every method, errors.Is/As for typed checks. Reads like the standard library.

Zero dependencies

Core uses only the standard library. No transitive vulnerabilities, no module cache surprises in your go.sum.

Channel-based streaming

Batch results stream through a Go channel. Backpressure works naturally; close on context cancellation.

Generated from OpenAPI

Every product field is a strongly-typed struct field. No `map[string]interface` traps.

Goroutine-safe

One client, share across goroutines. Internal connection pool reuses HTTP/2 streams to upstream.

Webhook signature verification

`asa.VerifyWebhook(headers, body)` returns a typed error with the exact mismatch reason.

Official resources

Pricing

Same rate across every integration. Monthly plans from $19 or pay-as-you-go at $0.90 per 1,000 successful requests. 1,000 free on signup.

Free

$0

Forever free on signup

  • check_circle1,000 requests / month
  • check_circle10 concurrent requests
  • check_circleAll 20 marketplaces
  • check_circleFull dashboard + analytics
  • check_circleTop-up at $0.90 / 1k
  • check_circleCommunity support
Start free
Most popular

Vibe

$19 / month

$0.70 / 1k effective

  • check_circle27,000 requests / month
  • check_circle30 concurrent requests
  • check_circleAll endpoints + content-language
  • check_circleCountry-matched residential IPs
  • check_circlePer-API-key usage tracking
  • check_circleTop-up at $0.90 / 1k
  • check_circleEmail support (1 business day)
Get Vibe

Pro

$49 / month

$0.60 / 1k effective

  • check_circle82,000 requests / month
  • check_circle50 concurrent requests
  • check_circlePriority routing queue
  • check_circleCountry-matched residential IPs
  • check_circleTeam seats (up to 5)
  • check_circleTop-up at $0.90 / 1k
  • check_circleEmail + chat support
Get Pro

Custom

$100-$2k / month

Flat $0.50 / 1k effective at every level

  • check_circle200k - 4M+ requests / month
  • check_circle100-500+ concurrent requests
  • check_circlePriority queue (highest)
  • check_circlePremium proxy pool + SLA on request
  • check_circleUnlimited team seats
  • check_circleWire / invoice / annual PO
  • check_circleDedicated Slack channel
Pick Custom level

Pay-as-you-go top-up

$0.90 / 1,000 successful requests

Available on every plan including Free. Top up any time when included credits run out. Only 2xx responses charged. Balance never expires.

Ship with Go today

1,000 free requests on signup. No credit card required.