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
- GitHub repo - source + issues + changelog
- pkg.go.dev reference - generated API docs
- Product API reference
- Search API reference
- Async batch API reference
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
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
Vibe
$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)
Pro
$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
Custom
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
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.