Go

Go SDK

Official SDK for the ScreenshotCenter API. Capture screenshots, PDFs, HTML, and video — without writing raw HTTP calls.

Installation

terminal
go get github.com/juliensobrier/screenshotcenter-go
Package coming soon to pkg.go.devpkg.go.dev/github.com/juliensobrier/screenshotcenter-go

Quick start

main.go
import sc "github.com/juliensobrier/screenshotcenter-go"

client := sc.New("your_api_key")

shot, err := client.Screenshot.Create("https://example.com", nil)
if err != nil { log.Fatal(err) }

result, err := client.WaitFor(shot.ID, nil)
if err != nil { log.Fatal(err) }

fmt.Println(result.URL)     // final URL
fmt.Println(result.Status)  // "finished"

More examples

Geo-targeting
shot, err := client.Screenshot.Create("https://example.com", &sc.CreateParams{
    Country: "fr",
    Lang:    "fr-FR",
})
if err != nil { log.Fatal(err) }
result, _ := client.WaitFor(shot.ID, nil)
client.Screenshot.SaveImage(result.ID, "/tmp/fr.png", nil)
PDF generation
t := true
shot, _ := client.Screenshot.Create("https://example.com", &sc.CreateParams{PDF: &t})
done, _  := client.WaitFor(shot.ID, nil)
client.Screenshot.SavePDF(done.ID, "/tmp/page.pdf")
Error handling
result, err := client.WaitFor(shot.ID, &sc.WaitForOptions{Timeout: 60000})
switch e := err.(type) {
case *sc.ScreenshotFailedError:
    fmt.Printf("screenshot failed: %s\n", e.Reason)
case *sc.TimeoutError:
    fmt.Printf("timed out after %dms\n", e.TimeoutMs)
case *sc.ApiError:
    fmt.Printf("API error %d: %s\n", e.Status, e.Message)
}

Resources