Go não precisa de dependência externa para chamadas HTTP simples — o pacote net/http da biblioteca padrão já resolve.
Função de requisição
func buscarPerfil(username string) (map[string]interface{}, error) {
url := fmt.Sprintf("https://scrapegram.cloud/api/v1/instagram/profile?username=%s", username)
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SCRAPEGRAM_TOKEN"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
return nil, fmt.Errorf("erro HTTP %d", resp.StatusCode)
}
var dados map[string]interface{}
json.NewDecoder(resp.Body).Decode(&dados)
return dados, nil
}
Por que Go é uma boa escolha aqui
Para pipelines de coleta que precisam rodar muitas chamadas concorrentes de forma eficiente, as goroutines do Go lidam bem com esse tipo de carga — mas lembre de limitar a concorrência com um semáforo pra não estourar seu rate limit.