ScreenshotMAX with Go

Use Go to interact with the ScreenshotMAX API via net/http. Below are examples for simple and signed screenshot requests.

Basic GET Screenshot

package main

import (
    "fmt"
    "io"
    "net/http"
    "net/url"
    "os"
)

func main() {
    endpoint := "https://api.screenshotmax.com/v1/screenshot"
    params := url.Values{}
    params.Add("access_key", "YOUR_ACCESS_KEY")
    params.Add("url", "https://example.com")
    params.Add("format", "png")

    fullURL := endpoint + "?" + params.Encode()

    resp, err := http.Get(fullURL)
    if err != nil {
        fmt.Println("Request failed:", err)
        return
    }
    defer resp.Body.Close()

    out, err := os.Create("screenshot.png")
    if err != nil {
        fmt.Println("File error:", err)
        return
    }
    defer out.Close()

    io.Copy(out, resp.Body)
    fmt.Println("Image saved to screenshot.png")
}

HMAC-Signed GET Screenshot

package main

import (
    "crypto/hmac"
    "crypto/sha256"
    "encoding/hex"
    "fmt"
    "io"
    "net/http"
    "net/url"
    "os"
)

func main() {
    accessKey := "YOUR_ACCESS_KEY"
    secretKey := "YOUR_SECRET_KEY"

    baseURL := "https://api.screenshotmax.com/v1/screenshot"

    query := url.Values{}
    query.Set("access_key", accessKey)
    query.Set("url", "https://example.com")
    query.Set("format", "png")

    qs := query.Encode()
    signature := signHMAC(qs, secretKey)

    // Add signature to query
    query.Set("signature", signature)

    fullURL := baseURL + "?" + query.Encode()

    resp, err := http.Get(fullURL)
    if err != nil {
        fmt.Println("Request failed:", err)
        return
    }
    defer resp.Body.Close()

    out, _ := os.Create("screenshot.png")
    io.Copy(out, resp.Body)
    fmt.Println("Image saved to screenshot.png")
}

func signHMAC(message, secret string) string {
    mac := hmac.New(sha256.New, []byte(secret))
    mac.Write([]byte(message))
    return hex.EncodeToString(mac.Sum(nil))
}

Next Steps

  • Explore other API options like HTML to PDF, animated screenshots, or web scraping.
  • Create scheduled recurring screenshots via Scheduled Tasks API

Support

For questions, issues, or feature requests, please contact our support team at support@screenshotmax.com.