Sviluppatori

Documentazione API e MCP di EveryInfra

Scegli un'attività dal catalogo pubblico. Crea una chiave API. Poi esegui la tua prima chiamata. Questa guida tratta esempi di richiesta, configurazione MCP, autenticazione, fatturazione e gestione degli errori.

Un solo account per dati, ricerca, risoluzione dei CAPTCHA e un'API per l'AI gratuita

EveryInfra offre 573 funzionalità di raccolta dei dati su 106 piattaforme, 17 strumenti di ricerca, 52 tipi di CAPTCHA e un'API per l'AI compatibile con OpenAI, gratuita dopo una ricarica. Ogni prodotto ha endpoint, permessi e formato di richiesta propri.

  • I cataloghi pubblici si possono consultare senza chiave API.
  • Gli endpoint autenticati usano una chiave API di tipo Bearer.
  • MCP e REST usano le stesse funzionalità, gli stessi parametri e le stesse risposte.

Guida rapida

Invia una richiesta reale

Crea una chiave API nella console, consulta il catalogo pertinente e invia l'identificatore della piattaforma o della funzionalità esattamente come indicato. La risposta include output strutturato e dati di fatturazione per la singola richiesta.

  • Imposta Authorization: Bearer YOUR_API_KEY.
  • Imposta Content-Type: application/json per i corpi delle richieste in formato JSON.
  • Usa gli identificatori del catalogo e i nomi dei parametri esattamente come vengono restituiti.
  • Per attività lente, limiti elevati o batch, invia "mode":"async" nel corpo della richiesta: ricevi subito un job_id e interroghi GET /api/v1/jobs/{job_id} per ottenere il risultato. Una richiesta sincrona deve completarsi entro 85 secondi; un job asincrono non è soggetto a questo limite.
Richiesta
curl -X POST https://api.everyinfra.com/api/v1/social \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"platform":"tiktok","action":"search","params":{"keyword":"AI infrastructure","limit":10}}'
Risposta
{
  "id": "…",
  "platform": "tiktok",
  "action": "search",
  "results": [
    {
      "id": "…",
      "text": "…",
      "author_username": "…"
    }
  ],
  "count": 10,
  "billing": {
    "charged": true,
    "charged_usd": 0.000556,
    "balance_after_usd": 12.340122
  }
}

Trova le attività supportate nei cataloghi pubblici

Usa i cataloghi per verificare attività supportate, input, prezzi e disponibilità. Il catalogo compatto di EveryData elenca l'essenziale per ogni azione; usa il catalogo completo per parametri facoltativi, limiti e campi della risposta. Aggiorna prezzi e disponibilità quando serve, invece di scriverli nel codice.

ProdottoEndpoint del catalogoCosa descrive
EveryDataGET /api/v1/social/catalog?compact=1Piattaforme, azioni, parametri obbligatori, modalità di consegna, disponibilità e prezzi
EverySearchGET /api/v1/search/toolsStrumenti di ricerca, parametri della richiesta, livelli e prezzi
EverySolveGET /api/v1/captcha/typesTipi di CAPTCHA, parametri, formato delle soluzioni, disponibilità e prezzi
API per l'AIGET /api/v1/modelsModelli attualmente accettati dall'API per l'AI; non serve una chiave API

Autenticazione

Invia la chiave API come token Bearer. L'autenticazione avviene prima della convalida dei parametri, quindi una richiesta senza chiave valida riceve 401 invece di un riscontro sui parametri. Tieni le chiavi fuori dal codice lato browser, dai log e dai repository pubblici.

  • Crea chiavi separate per ambienti o carichi di lavoro diversi.
  • Ruota una chiave dalla console quando ne cambiano l'ambito o l'esposizione.
  • Usa le restrizioni della console quando una chiave deve essere limitata a prodotti, funzionalità o intervalli IP specifici.
  • Usa la stessa chiave con GET /api/v1/account per controllare il saldo (ricaricato, bonus e totale), lo sconto sulle ricariche di questo mese, il limite di richieste al minuto e l'utilizzo delle ultime 24 ore. Gli importi sono in USD. La chiamata è di sola lettura, gratuita e non conta ai fini del limite al minuto.
  • In quella risposta, balance.total_usd è la somma di saldo ricaricato e saldo bonus, e le chiamate attingono prima al saldo bonus. bonus_expiring elenca gli importi bonus a tempo non ancora scaduti. rate_limit.requests_per_minute è condiviso da tutte le chiavi dell'account e usage_24h può avere un ritardo di circa un minuto.
  • Per lo storico dell'intero account (utilizzo giornaliero, chiamate recenti, fatturazione, movimenti del portafoglio), la stessa chiave può leggere l'API della console, ad esempio GET /portal/api/requests/{request_id}, oppure GET /portal/api/quality per il tasso di successo e la latenza di ogni funzionalità. La chiave deve avere accesso in lettura all'account; queste letture sono gratuite e limitate a 60 al minuto per account. L'elenco completo è nella sezione Account della specifica OpenAPI.
  • Per permettere a un'AI di modificare anche l'account, concedi gli ambiti di scrittura in API Keys → Restrict access: gestire le chiavi, modificare le impostazioni, aprire ticket o rispondere ai ticket. Tutti e tre sono disattivati per impostazione predefinita e solo tu puoi attivarli dopo aver effettuato l'accesso alla console. Tramite una chiave si possono creare al massimo 20 chiavi al giorno, mentre i ticket non hanno limiti giornalieri; visualizzare le chiavi per intero o ruotarle, modificare permessi o allowlist IP, riattivare le chiavi ed effettuare pagamenti restano sempre operazioni della console. La sezione Account della specifica OpenAPI elenca gli endpoint, ad esempio POST /portal/api/keys/{key_id}/disable.
  • Per evitare il polling, aggiungi un endpoint HTTPS in Settings → Webhooks nella console. Inviamo una POST firmata quando il saldo scende alla soglia impostata o quando un job asincrono termina. Verifica X-EveryInfra-Signature, un HMAC-SHA256 calcolato con il tuo segreto di firma su timestamp, un punto e il corpo grezzo; rifiuta i timestamp che si discostano di oltre 5 minuti ed elimina i duplicati in base all'ID dell'evento, perché le consegne non riuscite vengono ritentate con backoff, fino a 7 tentativi.

Questa chiave accede a tutti e quattro i prodotti, con un unico portafoglio condiviso

Una chiave API funziona come l'interruttore a chiave di un quadro elettrico: la giri e tutti e quattro i prodotti sono attivi, con un unico portafoglio condiviso. Nella console (API Keys → Restrict access) puoi spegnere un prodotto per una chiave; le chiamate a un prodotto spento restituiscono 403 capability_denied. Se disattivi la chiave si spegne tutto: le chiamate restituiscono 401.
account.sh
curl https://api.everyinfra.com/api/v1/account \
  -H "Authorization: Bearer YOUR_API_KEY"

POST /api/v1/social

EveryData

Raccogli dati da 106 piattaforme con 573 azioni supportate. Scegli una piattaforma e un'azione, poi fornisci gli input indicati per quell'azione.

GET /api/v1/social/catalog?compact=1

POST /api/v1/search

EverySearch

Scegli tra 17 strumenti per cercare sul web e recuperare il testo delle fonti. Indica l'identificatore dello strumento e passa gli input obbligatori.

GET /api/v1/search/tools

POST /api/v1/captcha

EverySolve

Risolvi 52 tipi di CAPTCHA tramite un unico endpoint. Imposta il campo del tipo e passa gli input obbligatori. Paghi per ogni soluzione riuscita.

GET /api/v1/captcha/types

POST /api/v1/chat/completions

API per l'AI

API chat/completions compatibile con OpenAI, gratuita per gli account che hanno effettuato una ricarica. Usala per pulire, classificare, estrarre e riassumere i dati che raccogli.

GET /api/v1/models

Convalida i parametri della richiesta

I parametri sconosciuti restituiscono 422 con l'elenco dei parametri supportati e, quando disponibile, un suggerimento con il nome più simile. I valori enum non validi restituiscono i valori ammessi. I parametri non vengono mai ignorati in silenzio né sostituiti con valori predefiniti.

  • Usa i nomi dei parametri in snake_case presenti nel catalogo.
  • Considera did_you_mean un suggerimento per correggere la richiesta, non un fallback riuscito.
  • Per input con più target, controlla le regole di fatturazione e i limiti del catalogo prima di inviare un array.

Riferimento API

Tutte le 106 piattaforme e le 573 API, raggruppate per categoria. Apri una piattaforma per la panoramica. Apri un'API per parametri, campi della risposta ed esempi di codice.

E-commerce15 piattaforme · 58 API
Social e contenuti51 piattaforme · 389 API
Recensioni e servizi locali23 piattaforme · 86 API
Ricerca e notizie17 piattaforme · 40 API

API per l'AI (gratuita dopo una ricarica)

L'API per l'AI offre un endpoint chat/completions compatibile con OpenAI. Qualsiasi account che abbia effettuato una ricarica può chiamarlo senza costi e senza intaccare il saldo, per pulire, deduplicare, classificare, estrarre e riassumere i dati che raccoglie; il formato dell'output lo stabilisce il prompt.

  • Con l'SDK di OpenAI, imposta base_url su https://api.everyinfra.com/api/v1 e invia la tua chiave API di EveryInfra nell'header Authorization: Bearer; un ?key= nell'URL viene rifiutato.
  • L'endpoint della chat è POST /api/v1/chat/completions, con il formato di richiesta e risposta di OpenAI.
  • Sono disponibili due modelli: gemini-3.6-flash, quello predefinito, e il più leggero gemini-flash-lite. GET /api/v1/models restituisce lo stesso elenco e non richiede chiave. Un nome di modello scritto male restituisce 422 con il nome corretto più probabile.
  • Lo streaming è supportato: invia stream: true per ricevere un flusso SSE che termina con data: [DONE] e aggiungi stream_options.include_usage per includere l'utilizzo dei token.
  • messages può contenere in totale fino a 45.000 caratteri; input più grandi restituiscono 422 input_too_large, quindi suddividili in richieste più piccole.
ai_quickstart.py
from openai import OpenAI
import os

client = OpenAI(base_url="https://api.everyinfra.com/api/v1",
                api_key=os.environ["EVERYINFRA_API_KEY"])
reply = client.chat.completions.create(
    model="gemini-3.6-flash",
    messages=[{"role": "user", "content": "Restituisci solo JSON: indica sentiment, argomento e intento di questa recensione."}],
)
print(reply.choices[0].message.content)

Limiti in base al totale delle ricariche, su tutte le chiavi dell'account

Totale ricaricheRichieste al minutoRichieste simultanee
Almeno una ricarica, per un totale inferiore a $100505
$100 o più50050
$500 o più5000500

I codici di credito e i crediti bonus superiori a 1 $ ciascuno contano come ricariche; il credito di prova e gli importi pari o inferiori a 1 $ no. Un account che non ha mai effettuato una ricarica né ricevuto un codice di credito o un credito bonus superiore a 1 $ riceve 403 ai_topup_required. I livelli indicano limiti massimi.

StatoSignificato
403 ai_topup_requiredL'account non ha mai effettuato una ricarica; qualsiasi ricarica attiva l'API per l'AI.
429 rate_limitedÈ stato raggiunto il limite al minuto (per_minute_limit) o ci sono troppe richieste simultanee in corso (concurrency_limit); attendi Retry-After, poi riprova.
503 ai_busyIl servizio è occupato; riprova dopo Retry-After.
403 ai_disabledL'API per l'AI è sospesa per questo account.
422 unknown_modelIl modello non esiste; il messaggio suggerisce il nome corretto più probabile.

L'API per l'AI serve a organizzare i dati che raccogli con EveryInfra. Se viene usata per altro, o se le chiamate appaiono chiaramente anomale, possiamo sospendere l'API per l'AI per quell'account; l'account, le sue altre API e il suo saldo non vengono toccati.

MCP per agenti AI

Usa MCP quando un client compatibile deve individuare e chiamare direttamente gli strumenti di EveryInfra. Gli strumenti coprono dati, ricerca, CAPTCHA e chat AI tramite everyinfra_chat (gratuita dopo una ricarica, senza streaming), e seguono le stesse regole dell'API REST per autenticazione, fatturazione, limiti, convalida e saldo.

  • Configura nel client l'URL del server remoto e una chiave API di EveryInfra.
  • Due endpoint accettano la stessa chiave: https://api.everyinfra.com/mcp elenca 12 strumenti comuni (dati, ricerca, CAPTCHA e chat AI, più saldo, registro delle chiamate, link di ricarica e ticket di supporto) e https://api.everyinfra.com/mcp/all elenca tutti i 24 strumenti; gli strumenti per i dati dell'account e per la gestione descritti sotto sono elencati solo lì.
  • Gli strumenti dell'account ora hanno nomi che iniziano con il verbo (ad esempio, everyinfra_account ora è everyinfra_get_account). I vecchi nomi funzionano ancora su entrambi gli endpoint ma non sono più elencati, quindi gli script che li chiamano non vanno modificati; per usare questi strumenti da un client AI, punta il connettore su /mcp/all.
  • Esegui la scoperta delle funzionalità prima di una chiamata per dati, ricerca o CAPTCHA.
  • Conserva la chiave API nella configurazione dei segreti o dell'ambiente del client.
  • Chiama lo strumento gratuito everyinfra_get_account (senza argomenti) per controllare saldo, sconto, limite al minuto e utilizzo recente; restituisce lo stesso riepilogo di GET /api/v1/account.
  • Dopo una chiamata per dati con mode: "async", leggi il risultato con lo strumento gratuito everyinfra_get_job e il job_id restituito; lo strumento restituisce gli stessi dati di GET /api/v1/jobs/{job_id}.
  • Per i dati dell'account, gli strumenti gratuiti everyinfra_get_usage, everyinfra_list_requests, everyinfra_get_billing, everyinfra_list_keys e everyinfra_list_tickets restituiscono utilizzo giornaliero, chiamate recenti (cercane una per request_id per vedere come è stato regolato il suo addebito), spesa e movimenti del portafoglio, elenco delle chiavi ed elenco dei ticket di supporto. La chiave deve avere accesso in lettura all'account: le chiavi senza limiti per linea di prodotto possono leggere per impostazione predefinita utilizzo, chiamate e fatturazione; per le chiavi limitate a determinati prodotti e per l'accesso ai ticket, l'abilitazione si fa in API Keys → Restrict access nella console.
  • Quando l'account ha bisogno di fondi, everyinfra_get_topup_link restituisce la pagina di ricarica della console; il titolare dell'account paga lì, e lo strumento non crea mai pagamenti né addebita nulla.
  • Quando le chiamate continuano a fallire, i dati sembrano sbagliati, va verificata una ricarica o un addebito, oppure ti serve una nuova piattaforma o un nuovo campo, qualsiasi chiave può aprire un ticket con il supporto umano tramite everyinfra_create_ticket; è gratuito e non richiede permessi aggiuntivi. Lo strumento restituisce il numero del ticket e un link alla console, e everyinfra_get_ticket mostra poi l'avanzamento del ticket e le risposte del supporto. Via REST, le stesse chiamate sono POST /api/v1/support/tickets e GET /api/v1/support/tickets/{ticket_id}. Il precedente everyinfra_ticket_create (richiede un ambito di scrittura) funziona ancora; le nuove integrazioni dovrebbero usare everyinfra_create_ticket.
  • Dopo che il titolare dell'account ha concesso alla chiave gli ambiti di scrittura nella console, un'AI può usare anche everyinfra_create_key, everyinfra_update_key, everyinfra_disable_key, everyinfra_delete_key, everyinfra_update_settings, everyinfra_set_webhook, everyinfra_test_webhook e everyinfra_reply_ticket. Una chiave creata in questo modo non può mai avere permessi più ampi della chiave chiamante né ricevere ambiti di scrittura; con questi strumenti, le chiavi create nella console possono solo essere disattivate. Ogni modifica compare nelle notifiche della console.
Endpoint
POST /mcp
Trasporto
Streamable HTTP, stateless
Strumenti
I nomi degli strumenti iniziano con everyinfra_. Gli strumenti rinominati rispondono ancora ai vecchi nomi, quindi prompt e workflow continuano a funzionare.

Come usare EveryInfra con i proxy IPFoxy

Una chiamata all'API di EveryInfra non ha bisogno di un proxy. La richiesta va direttamente a api.everyinfra.com e restituisce JSON con campi denominati. Per i tuoi programmi è diverso: quando il tuo crawler o la tua automazione del browser deve aprire una pagina come un utente di un certo paese, serve un IP di uscita in quel paese.

La divisione dei compiti è quindi semplice. IPFoxy dà alle tue richieste un IP di uscita diverso. EveryInfra ti fornisce dati strutturati per le piattaforme del suo catalogo.

AttivitàCosa usare
Aprire pagine che cambiano in base al paese (prezzo locale, consegna, posizionamento degli annunci) o accedere al tuo negozio e ai tuoi accountUn proxy IPFoxy + il tuo crawler o browser
Raccogliere dati da siti o campi che non sono nel catalogo dell'API per i datiUn proxy IPFoxy + il tuo crawler
Ottenere in blocco i dati delle piattaforme del catalogo per un foglio di calcolo o un databaseL'API per i dati di EveryInfra, direttamente, senza proxy

Questo esempio Python esegue entrambi i passaggi in un unico script. Il passaggio 1 chiama ipinfo.io tramite l'IP di uscita di IPFoxy e stampa il paese di uscita. Il passaggio 2 chiama EveryInfra direttamente per un prodotto Amazon. Prima di eseguirlo, imposta due variabili d'ambiente: EVERYINFRA_API_KEY è la tua chiave API e IPFOXY_PROXY è la stringa di connessione della dashboard di IPFoxy, nel formato http://username:password@host:port. Installa requests con pip install requests.

proxy_plus_data_api.py
import os

import requests

EVERYINFRA_API_KEY = os.environ["EVERYINFRA_API_KEY"]
IPFOXY_PROXY = os.environ["IPFOXY_PROXY"]  # http://username:password@host:port
PROXIES = {"http": IPFOXY_PROXY, "https": IPFOXY_PROXY}

# 1. La tua richiesta esce dall'IP di uscita di IPFoxy.
exit_ip = requests.get("https://ipinfo.io/json", proxies=PROXIES, timeout=30).json()
print("Paese dell'IP di uscita:", exit_ip.get("country"))

# 2. La chiamata a EveryInfra è diretta: non serve un proxy.
direct = requests.Session()
direct.trust_env = False  # ignora HTTP(S)_PROXY, così questa chiamata non consuma traffico proxy
resp = direct.post(
    "https://api.everyinfra.com/api/v1/social",
    headers={"Authorization": f"Bearer {EVERYINFRA_API_KEY}"},
    json={
        "platform": "amazon",
        "action": "profile",
        "params": {"url": "https://www.amazon.com/dp/B0CYJDVT31"},
    },
    timeout=120,
)
resp.raise_for_status()
body = resp.json()
item = body["results"]
print(item["title"][:60], item["currency"], item["price"], item["rating"])
print("Addebitato (USD):", body["billing"]["charged_usd"])
  • direct.trust_env = False fa sì che la chiamata a EveryInfra ignori le variabili d'ambiente HTTP_PROXY e HTTPS_PROXY. Senza questa riga, anche questa chiamata passa per un eventuale proxy di sistema e paghi il traffico proxy che consuma.
  • Un 407 dal proxy significa che username o password sono errati. L'esempio si ferma prima di chiamare EveryInfra, quindi non viene addebitato nulla. Secondo il centro assistenza di IPFoxy, il proxy funziona solo se esegui il codice da una rete al di fuori della Cina continentale.
  • Abbiamo eseguito questo codice il 24 ottobre 2026. La chiamata a EveryInfra ha restituito titolo, prezzo e valutazione del prodotto, con un addebito di $0,001389. Non abbiamo un account IPFoxy, quindi abbiamo testato il passaggio del proxy con un proxy fittizio locale: il formato dell'indirizzo, il tunnel CONNECT e il caso 407.
  • Quanto traffico proxy consuma una pagina: circa 0,44 MB per il solo HTML e circa 7,96 MB per un caricamento completo nel browser. Per il costo per 1.000 pagine con ciascun piano IPFoxy e il tasso di successo di cui hai bisogno, leggi Quanto traffico proxy consuma una pagina Amazon?.
  • L'esempio completo, il proxy fittizio locale e lo script di misurazione dei byte sono su GitHub: everyinfra-agent-plugins / examples / proxy-plus-data-api.

Informativa sui referral: il link «Visita IPFoxy» qui sotto è un link di referral che IPFoxy ci ha fornito, con il nostro codice di referral. Se ti registri o acquisti tramite questo link, IPFoxy potrebbe pagarci una commissione. IPFoxy è un nostro partner.

Visita IPFoxy (si apre in una nuova scheda)I prodotti e i prezzi di IPFoxy sono nella nostra pagina dei partner.

Come usare EveryInfra con la ricerca Exa

Exa cerca sul web in base al significato. La tua query non deve per forza contenere le parole presenti nella pagina: Exa trova comunque le aziende, gli articoli e i paper giusti e ne restituisce il testo insieme ai risultati. EveryInfra ti fornisce dati strutturati delle piattaforme, come valutazioni e recensioni di G2 e Trustpilot o commenti di YouTube, in JSON con campi denominati.

Uno schema comune: usa Exa per elencare un insieme di elementi, poi usa EveryInfra per aggiungere a ciascuno i dati della piattaforma.

AttivitàCosa usare
Trovare un insieme di aziende, articoli o paper in base al significato, con il relativo testoExa
Valutazioni, numero di recensioni e testo delle recensioni di un prodotto noto su G2 o TrustpilotLe API g2 e trustpilot di EveryInfra
Commenti e numero di like sotto un video YouTubeL'API youtube di EveryInfra (Exa restituisce il testo della trascrizione di un video, ma non i commenti)

Questo esempio Python crea una tabella delle recensioni dei concorrenti. Il passaggio 1 chiede a Exa «note-taking apps similar to Obsidian»; category: "company" fa sì che restituisca solo home page di aziende. Il passaggio 2 chiama l'API g2/search di EveryInfra per ogni azienda e ne legge la valutazione e il numero di recensioni su G2. Prima di eseguirlo, imposta due variabili d'ambiente: EXA_API_KEY è la tua chiave della dashboard di Exa ed EVERYINFRA_API_KEY è la tua chiave API di EveryInfra. Serve pip install requests.

exa_plus_data_api.py
import os
from concurrent.futures import ThreadPoolExecutor
from urllib.parse import urlsplit

import requests

EXA_API_KEY = os.environ["EXA_API_KEY"]
EVERYINFRA_API_KEY = os.environ["EVERYINFRA_API_KEY"]
QUESTION = "note-taking apps similar to Obsidian"

# 1. Exa: trova aziende in base al significato, non alle parole chiave
companies = requests.post(
    "https://api.exa.ai/search",
    headers={"x-api-key": EXA_API_KEY},
    json={"query": QUESTION, "category": "company", "type": "auto", "numResults": 10},
    timeout=60,
).json()["results"]


# 2. EveryInfra: valutazione G2 e numero di recensioni di ogni azienda
def g2_rating(company):
    name = company["title"].split(" - ")[0].split(" | ")[0].strip()
    resp = requests.post(
        "https://api.everyinfra.com/api/v1/social",
        headers={"Authorization": f"Bearer {EVERYINFRA_API_KEY}"},
        json={"platform": "g2", "action": "search", "params": {"keyword": name}},
        timeout=180,
    )
    resp.raise_for_status()
    body = resp.json()
    match = next((p for p in body["results"] if p["product_name"].lower() == name.lower()), None)
    return name, match, body["billing"]["charged_usd"]


with ThreadPoolExecutor(max_workers=4) as pool:
    rows = list(pool.map(g2_rating, companies))

spent = 0.0
for company, (name, g2, charged) in zip(companies, rows):
    spent += charged
    domain = urlsplit(company["url"]).hostname.removeprefix("www.")
    if g2 and g2["review_count"]:
        print(f"{name:12} {domain:16} G2 {g2['rating']} / 5 · {g2['review_count']} recensioni")
    else:
        print(f"{name:12} {domain:16} ancora nessuna recensione su G2")
print("Addebito EveryInfra (USD):", round(spent, 6))
  • Abbiamo eseguito questo codice così com'è il 25 ottobre 2026. Exa ha restituito 10 home page di aziende, e le stesse 10 quando abbiamo ripetuto la ricerca qualche minuto dopo. 7 su 10 hanno valutazioni e recensioni su G2, ad esempio Goodnotes con 4,7 e 123 recensioni e Milanote con 4,5 e 42. Abbiamo eseguito una volta ciascuna le versioni in inglese, cinese e spagnolo; ogni esecuzione ha richiesto 44–51 secondi. EveryInfra ha addebitato $0,01389 (10 chiamate g2/search); la ricerca Exa è costata $0,007.
  • Un'azienda conta come corrispondenza solo quando il suo nome è identico al nome del prodotto su G2. L'esempio prende il titolo del risultato Exa ed elimina tutto ciò che segue " - ". Nella nostra esecuzione, su G2 non c'era nessun prodotto chiamato Brainio, mentre Yaranga e Brainfo hanno pagine G2 ma ancora nessuna recensione.
  • Ogni chiamata g2/search viene addebitata una volta ($0,001389), anche quando nessun prodotto ha lo stesso nome, perché l'API restituisce comunque risultati di ricerca. Una chiamata richiede circa 30–70 secondi, quindi l'esempio esegue 4 chiamate alla volta.
  • Per Trustpilot, cambia il passaggio 2 in trustpilot/profile e inserisci il dominio dell'azienda in company. Per le stesse aziende, 4 su 7 avevano un profilo Trustpilot. Un'azienda senza profilo restituisce un risultato vuoto e non viene addebitata.
  • I risultati di Exa non contengono thread di Reddit: con includeDomains impostato su reddit.com ha restituito 0 risultati, senza alcun costo.
  • Per la copertura su 3 categorie e 30 aziende, i grandi nomi che il confronto sul nome esatto non trova e i dati completi, leggi Exa trova i concorrenti, EveryInfra ne controlla le recensioni.

EveryInfra ed Exa sono partner. Il link «Visita Exa» qui sotto è un link semplice, senza codice di referral.

Visita Exa (si apre in una nuova finestra)I prodotti e i prezzi di Exa sono nella nostra pagina dei partner.

Usa EveryInfra con Monid

Monid è un router di strumenti per agenti AI. L'agente descrive in una frase ciò che gli serve: discover restituisce gratis gli endpoint adatti e i relativi prezzi, inspect restituisce gratis lo schema di input e il prezzo attuale e solo run viene addebitato, a quel prezzo, su un unico saldo prepagato. EveryInfra ti offre API per i dati delle piattaforme con struttura fissa: un unico formato di richiesta e, per ogni funzionalità, nomi dei campi fissi e un prezzo fisso.

Una suddivisione comune si basa su quanto spesso si ripete una chiamata. Le piattaforme presenti nel catalogo di EveryInfra (106 al 3 novembre 2026; GET /api/v1/social/catalog restituisce l'elenco aggiornato) passano da EveryInfra. Le piattaforme che non sono nel catalogo, e gli strumenti che non riguardano i dati (meteo, geocoding, loghi aziendali, generazione di immagini), passano da Monid.

AttivitàCosa usare
Dati delle piattaforme che raccogli ogni giorno, ad esempio ricerche su Xiaohongshu, prodotti Amazon o commenti di YouTubeL'API di EveryInfra o lo strumento MCP everyinfra_call_api; il catalogo elenca le piattaforme
Una piattaforma che non è nel catalogo di EveryInfra, o uno strumento che ti serve solo ogni tantoMonid: discover per trovare un endpoint, inspect per leggere il prezzo, poi run
Non sai ancora quale strumento usareMonid discover (gratuito; restituisce i candidati in ordine di pertinenza con i relativi prezzi)

Questo esempio in Python mette entrambi i tipi di chiamata in un unico script. Il passaggio 1 è l'attività quotidiana: chiama xiaohongshu/search di EveryInfra per "matcha latte", ordinando per numero di like, e stampa le prime 3 note e l'importo addebitato. Il passaggio 2 è un'attività occasionale: Monid trova uno strumento che restituisce il logo di un'azienda a partire dal dominio, e lo script lo esegue solo se il prezzo indicato da inspect non supera MAX_PRICE_USD. Prima di eseguirlo, imposta due variabili d'ambiente: EVERYINFRA_API_KEY è la tua chiave API di EveryInfra e MONID_API_KEY è una chiave API che crei nella dashboard di Monid (app.monid.ai). Devi anche eseguire pip install requests.

everyinfra_plus_monid.py
import os

import requests

EVERYINFRA_API_KEY = os.environ["EVERYINFRA_API_KEY"]
MONID_API_KEY = os.environ["MONID_API_KEY"]
MONID = "https://api.monid.ai/v1"
MONID_HEADERS = {"Authorization": f"Bearer {MONID_API_KEY}"}
MAX_PRICE_USD = 0.01  # do not run a Monid tool that costs more than this per call

# 1. The daily job: EveryInfra xiaohongshu/search, one fixed request shape
resp = requests.post(
    "https://api.everyinfra.com/api/v1/social",
    headers={"Authorization": f"Bearer {EVERYINFRA_API_KEY}"},
    json={"platform": "xiaohongshu", "action": "search",
          "params": {"keyword": "matcha latte", "sort": "most_liked"}},
    timeout=120,
)
resp.raise_for_status()
body = resp.json()
for note in body["results"][:3]:
    print(note["like_count"], note["collect_count"], note["posted_at"][:10], note["url"])
print("EveryInfra:", len(body["results"]), "notes, charged (USD):", body["billing"]["charged_usd"])

# 2. A one-off lookup that is not a daily platform: discover, inspect, run on Monid
found = requests.post(f"{MONID}/discover", headers=MONID_HEADERS, timeout=60,
                      json={"query": "company logo image URL from a domain", "limit": 3}).json()["results"]
# discover adds ranking and price fields to each result; inspect and run take only the fields that name the tool
SHOWN_ONLY = ("providerName", "description", "price", "score", "scoreBreakdown", "tags", "metrics", "hints")
tool = {key: value for key, value in found[0].items() if key not in SHOWN_ONLY}
detail = requests.post(f"{MONID}/inspect", headers=MONID_HEADERS, timeout=60, json=tool).json()
price = detail["price"]["amount"]["value"]
print("Monid tool:", detail["endpoint"], "price (USD):", price)
if price <= MAX_PRICE_USD:
    run = requests.post(f"{MONID}/run", headers=MONID_HEADERS, timeout=120,
                        json={**tool, "input": {"pathParams": {"company": "starbucks.com"}}}).json()
    print("Monid run:", run.get("runId"), run.get("status"), run.get("output"))
  • Abbiamo eseguito questo codice così com'è il 3 novembre 2026 alle 16:45 (ora di Singapore). EveryInfra ha restituito 20 note e addebitato 0,005556 $. discover di Monid ha messo al primo posto un endpoint per i loghi aziendali, inspect ha indicato 0 $ per chiamata e run ha restituito lo stato COMPLETED e l'URL dell'immagine del logo. Lo script ha impiegato 6–7 secondi. Abbiamo eseguito una volta ciascuna la versione cinese, inglese e spagnola (la versione cinese cerca il nome cinese della bevanda).
  • Ogni chiamata a xiaohongshu/search restituisce una pagina contenente fino a 20 note e comporta un addebito di 0,005556 $. Una pagina senza note non viene addebitata. Per ottenere la pagina successiva, reinvia il next_page_token restituito nei risultati.
  • Monid non addebita discover né inspect; viene addebitato solo run, al prezzo indicato da inspect. Durante l'esecuzione, Monid riserva sul saldo il costo stimato e contabilizza l'importo effettivo al termine (llms.txt di Monid, consultato il 2026-11-03). L'esempio usa MAX_PRICE_USD per saltare gli strumenti che superano il tuo budget.
  • Puoi dare all'agente una regola di instradamento come questa: "Le piattaforme presenti in GET https://api.everyinfra.com/api/v1/social/catalog passano da everyinfra_call_api. Tutte le altre piattaforme e tutti gli altri strumenti passano da Monid: prima discover, poi inspect, ed esegui run solo se il prezzo rientra nel budget. Registra l'importo addebitato per ogni chiamata."
  • Il server MCP di Monid (https://mcp.monid.ai/v1) richiede un accesso OAuth nel browser e non l'abbiamo testato. I passaggi di configurazione per Claude, Claude Code, Codex, OpenCode e ChatGPT sono nella [guida rapida MCP di Monid](https://monid.ai/docs/guide/quickstart-mcp). Per la parte di EveryInfra, consulta la sezione MCP più sopra.

EveryInfra e Monid sono partner. Il link "Visita Monid" qui sotto è un link semplice, senza codice di affiliazione.

Visita Monid (si apre in una nuova finestra)Trovi prodotti e fatturazione di Monid nella nostra pagina dei partner.

Come funzionano addebiti e rettifiche del saldo

Controlla nel catalogo pubblico il prezzo e l'unità di fatturazione della funzionalità che ti serve. Ogni risposta riporta l'importo addebitato. Per i prodotti addebitati solo in caso di consegna riuscita, le richieste non riuscite o con risultati vuoti non vengono addebitate.

  • Non convertire nel tuo client le unità interne del portafoglio in valuta.
  • Mostra la valuta e gli importi restituiti dall'API e usali per riconciliare gli addebiti.
  • Quando un'operazione basata sulla consegna non si completa, non resta alcun addebito finale e l'eventuale importo trattenuto torna automaticamente sul saldo dell'account.
  • L'oggetto billing di ogni risposta a pagamento include charged_usd, l'importo addebitato per quella chiamata in USD (0 se non è stato addebitato nulla, null finché l'esito non è noto), e balance_after_usd, il saldo del portafoglio dopo la contabilizzazione della chiamata (null se non è possibile leggerlo). Durante un batch, tieni d'occhio balance_after_usd invece di interrogare l'account.
  • Quando l'importo trattenuto per una chiamata non riuscita è stato restituito, anche il campo billing nel corpo dell'errore contiene balance_after_usd.

Gestione degli errori

Leggi insieme lo stato HTTP e il corpo dell'errore. Ogni errore indica anche di chi è il problema e cosa fare dopo: fault (request, account o service), retryable e next_steps. Quando il problema è lato EveryInfra e i nuovi tentativi sono esauriti, support contiene una bozza di ticket; chiedi all'utente prima di aprirlo. Prima di riprovare, verifica cosa non ha funzionato e se ripetere la richiesta potrebbe duplicare un'azione.

StatoSignificatoCosa fare
400Piattaforma o azione sconosciutaUsa did_you_mean e allowed dalla risposta, oppure il catalogo delle funzionalità.
401Chiave API mancante, non valida o disattivataControlla il token Bearer e lo stato della chiave.
402Saldo del portafoglio insufficienteControlla il saldo attuale con GET /api/v1/account, poi ricarica l'account o riduci l'ambito della richiesta.
404Route o risorsa sconosciutaControlla l'endpoint e l'identificatore della risorsa.
422Parametro, valore o tipo non validoLeggi dalla risposta i valori supportati e did_you_mean.
429Limite di frequenza delle richieste raggiuntoAttendi Retry-After prima di riprovare. Il limite è per account e conta tutte le chiavi API insieme; una chiave può avere anche un proprio limite più basso.
5xxNon è stato possibile inoltrare la richiestaAnnota l'ID della richiesta e segui next_steps. In caso di timeout (timeout), ripeti la stessa richiesta con "mode":"async" per ricevere un job_id invece di attendere.

Gli endpoint dei cataloghi richiedono una chiave API?

No. I cataloghi pubblici delle funzionalità si possono consultare prima della registrazione. Le chiamate autenticate richiedono comunque una chiave API Bearer valida.

Da dove provengono i dati e avete il permesso delle piattaforme?

EveryInfra restituisce contenuti visibili pubblicamente su ciascuna piattaforma, come post pubblici, commenti, pagine prodotto e profili. Non devi registrare un'app per sviluppatori sulla piattaforma né accedere con un account della piattaforma. Non siamo partner di queste piattaforme, non le rappresentiamo e non otteniamo il loro permesso per tuo conto. Sei tu a decidere come usare i dati: assicurati che l'uso sia conforme alla legge applicabile e ai termini della piattaforma (vedi le sezioni 1 e 4 dei [Termini di servizio](/it/terms)). Il fatto che un contenuto sia visibile pubblicamente non significa che sia consentito copiarlo, ripubblicarlo o usarlo a fini commerciali.

MCP e REST sono prodotti separati?

No. MCP è un altro modo per accedere agli strumenti di EveryInfra attualmente individuati. Dati, ricerca, CAPTCHA e chat AI riutilizzano le regole REST corrispondenti per autenticazione, fatturazione, convalida, limiti di frequenza delle richieste e rettifiche del saldo.

L'API per l'AI è gratuita?

Sì. Qualsiasi account che abbia effettuato una ricarica può chiamarla senza intaccare il saldo. I limiti dipendono dal totale delle ricariche: 50 richieste al minuto e fino a 5 richieste simultanee per un totale di ricariche inferiore a $100; 500 e 50 a partire da $100; 5000 e 500 a partire da $500; i codici di credito e i crediti bonus superiori a 1 $ ciascuno contano come ricariche, mentre il credito di prova e gli importi pari o inferiori a 1 $ no.

Come controllo il saldo dal codice?

Chiama GET /api/v1/account con la stessa chiave API Bearer. Restituisce il saldo ricaricato, bonus e totale in USD, lo sconto sulle ricariche di questo mese, il limite di richieste al minuto e l'utilizzo delle ultime 24 ore, senza addebiti e senza contare ai fini del limite. Ogni risposta a pagamento include anche billing.balance_after_usd.

Un parametro non supportato può essere ignorato?

No. I parametri sconosciuti restituiscono 422 con i valori supportati e, quando è possibile determinarlo, un suggerimento con il nome più simile.

Come devo inviare un grande batch di richieste?

Usa la modalità asincrona: aggiungi "mode": "async" al corpo della richiesta. Ogni chiamata restituisce subito un job_id e interroghi GET /api/v1/jobs/{job_id} per ottenere il risultato. Una chiamata sincrona deve completarsi entro 85 secondi, altrimenti fallisce per timeout (senza addebito); un job asincrono non è soggetto a questo limite.

Le nostre statistiche di visita interne sono sempre attive. Google Analytics viene caricato solo se scegli «Consenti analisi». Informativa sulla privacy