POST

Stato di salute dell'API

Operatività nelle ultime 24 ore
98%
Tempo medio nelle ultime 24 ore
8.54 s
  • Buono / normale
  • Disponibile
  • Limitato
  • Quasi del tutto inattivo
Buono

Ultime 24 ore

Ultimi 30 giorni

Trova offerte di lavoro su Upwork per una competenza. Ottieni budget o fascia oraria, livello di esperienza, numero di proposte e spesa, valutazione e verifica del pagamento del cliente. Filtra per job_type, experience_level o date di pubblicazione. Non vengono inviate proposte, e non è implicita alcuna assegnazione.

Invia POST https://api.everyinfra.com/api/v1/social con platform impostato su upwork e action impostato su search. Prezzo $1.39 per 1.000 richieste ($0.001389 per chiamata). Le chiamate non riuscite e i risultati vuoti non vengono addebitati. Sincrona. Per i job più lenti, aggiungi "mode": "async" al corpo della richiesta, recupera il job_id ed esegui il polling.

Upwork Search trova gli annunci di lavoro pubblicati dai clienti su Upwork in base a keyword e restituisce per ciascuno titolo, descrizione, budget o fascia di tariffa oraria, tipo di contratto, livello di esperienza richiesto, carico di lavoro, durata prevista, numero di proposte, numero di persone da assumere, data di pubblicazione e tag. Restituisce anche il profilo del cliente: nome, località, valutazione, spesa totale, tasso di assunzione, tariffa oraria media pagata e verifica del metodo di pagamento. Freelance e agenzie la usano per trovare progetti per cui vale la pena inviare una proposta, mentre gli analisti la usano per studiare domanda e tariffe di una competenza.

Elenca lavori, non freelance. Filtra con job_type, experience_level e un intervallo di pubblicazione in since e until, e ordina con sort. I lavori a prezzo fisso riportano budget, con la valuta in budget_currency, mentre quelli a ore riportano hourly_rate_min e hourly_rate_max. Un valore alto di proposals indica una concorrenza agguerrita, e client_total_spent dice sull'affidabilità di un cliente più di qualsiasi altro campo.

Prompt per l'AI

#
Aiutami a scrivere uno script di raccolta dei dati con l'endpoint Upwork Ricerca di EveryInfra (upwork/search).

Come funziona l'endpoint:
- Richiesta: POST https://api.everyinfra.com/api/v1/social con l'header Authorization: Bearer <chiave API>. Leggi la chiave dalla variabile d'ambiente EVERYINFRA_API_KEY e non scriverla mai direttamente nel codice.
- Nel corpo della richiesta imposta platform su upwork e action su search, e inserisci i parametri in params.
- Parametri obbligatori:
  - keyword: Cerca lavori in outsourcing in search e talenti in freelancers. Lo stesso termine di competenza corrisponde alla domanda dei clienti in un'azione e ai profili dei freelance nell'altra.
- Parametri facoltativi:
  - exclude_keywords: Parole chiave degli annunci di lavoro da escludere in search; non è una blacklist di talenti né un requisito minimo di competenze.
  - experience_level: Filtra gli annunci di lavoro per livello di esperienza: entry_level, intermediate_level o expert_level. (valori consentiti: entry_level / expert_level / intermediate_level)
  - job_type: Tipo di fatturazione del contratto per search: hourly o fixed_price, non tempo pieno o part-time. (valori consentiti: fixed_price / hourly)
  - since: Data iniziale di pubblicazione dell'annuncio per search, non la data di registrazione del datore di lavoro.
  - sort: Ordinamento degli annunci per search: newest, oldest o relevance. Non è garantito che oldest abbia effetto in ogni caso. (valori consentiti: newest / oldest / relevance)
  - until: Data finale di pubblicazione dell'annuncio per search, da usare insieme a since; non è la data di fine del contratto.
  - limit: Numero massimo di righe da restituire in questa chiamata: un intero da 1 a 100. Se lo ometti, viene applicato il valore predefinito; una chiamata può restituire meno righe. (predefinito: 20)
- Restituisce un elenco di record. Campi principali di ogni record: id, url, title, text, budget, budget_currency, hourly_rate_min, hourly_rate_max, job_type, experience_level, engagement_type, duration; 27 campi in totale, elenco completo su https://api.everyinfra.com/api/v1/social/catalog?platform=upwork.
- Esempio di corpo della richiesta:
{
  "platform": "upwork",
  "action": "search",
  "params": {
    "keyword": "Python automation"
  }
}
- Prezzo: $1.39 per 1.000 richieste; le richieste non riuscite e i risultati vuoti non vengono addebitati.
- Per decine o centinaia di target, aggiungi "mode": "async" al corpo: ricevi subito un job_id ed esegui il polling su GET https://api.everyinfra.com/api/v1/jobs/{job_id} per ottenere il risultato.
- In caso di 422, correggi la richiesta usando i nomi dei parametri e i valori consentiti suggeriti nell'errore; in caso di 429 o 503, attendi il tempo indicato da Retry-After e riprova.

Prima di scrivere il codice, chiedimi quali target mi servono, quanti, quali campi e quale formato di output voglio; poi conferma con me il piano e il costo indicativo.

Parametri della richiesta

#
NomePosizioneTipoObbligatorioPredefinitoDescrizione
AuthorizationheaderstringSì-Bearer seguito dalla tua chiave API. Creala nella console; non inserirla mai in un URL o in un repository di codice.
platformbodystringSìupworkIdentificativo della piattaforma, valore fisso.
actionbodystringSìsearchIdentificativo della funzionalità, valore fisso.
keywordbody.paramsstringSì-Cerca lavori in outsourcing in search e talenti in freelancers. Lo stesso termine di competenza corrisponde alla domanda dei clienti in un'azione e ai profili dei freelance nell'altra.
exclude_keywordsbody.paramsobjectNo-Parole chiave degli annunci di lavoro da escludere in search; non è una blacklist di talenti né un requisito minimo di competenze.
experience_levelbody.paramsstring (enum)No-Filtra gli annunci di lavoro per livello di esperienza: entry_level, intermediate_level o expert_level.Valori consentitientry_levelexpert_levelintermediate_level
job_typebody.paramsstring (enum)No-Tipo di fatturazione del contratto per search: hourly o fixed_price, non tempo pieno o part-time.Valori consentitifixed_pricehourly
sincebody.paramsdateNo-Data iniziale di pubblicazione dell'annuncio per search, non la data di registrazione del datore di lavoro.
sortbody.paramsstring (enum)No-Ordinamento degli annunci per search: newest, oldest o relevance. Non è garantito che oldest abbia effetto in ogni caso.Valori consentitinewestoldestrelevance
untilbody.paramsdateNo-Data finale di pubblicazione dell'annuncio per search, da usare insieme a since; non è la data di fine del contratto.
limitbody.paramsinteger (1–100)No20Numero massimo di righe da restituire in questa chiamata: un intero da 1 a 100. Se lo ometti, viene applicato il valore predefinito; una chiamata può restituire meno righe. I valori più alti restituiscono 422 prima di qualsiasi addebito.

Esempi di codice

#
bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "upwork",
  "action": "search",
  "params": {
    "keyword": "Python automation"
  }
}'

Definizione OpenAPI (JSON)Gli esempi leggono la chiave dalla variabile d'ambiente EVERYINFRA_API_KEY; il codice copiato non contiene mai la tua chiave.

Esempio di risposta

#
Acquisita il September 26, 2026 at 08:56 (UTC) chiamando questa API con i parametri dell'esempio di codice qui sopra. results e count sono la risposta reale di quella chiamata, da cui sono state rimosse le informazioni personali (nomi, handle, avatar, link ai profili, recapiti); l'elenco conserva i primi 2. id, billing e quota cambiano a ogni chiamata, quindi ne viene mostrata solo la struttura.
json
{  "id": "req_…",  "platform": "upwork",  "action": "search",  "results": [    {      "id": "•••",      "url": "https://www.upwork.com/jobs/~022103162557197640589",      "title": "Part-Time Automation and Systems Builder",      "text": "# Part-Time Automation & Systems Builder\n\n**The role**\n\nWe’re looking for someone who can turn operational problems into dependable systems our team uses every day. You’ll build automations, internal tools, and reporting workflows that reduce manual work as we grow.\n\nOur technica…",      "budget_currency": "USD",      "hourly_rate_min": 20,      "hourly_rate_max": 30,      "job_type": "HOURLY",      "experience_level": "IntermediateLevel",      "engagement_type": "FULL_TIME",      "duration": "More than 6 months",      "proposals": 173,      "persons_to_hire": 1,      "posted_at": "2026-09-24T16:40:48.454000+00:00",      "tags": [        "Business Process Automation",        "API Integration",        "Google Apps Script"      ],      "client_location": "United States",      "client_rating": 4.91,      "client_review_count": 16,      "client_total_spent": 13591.13,      "payment_verified": true,      "platform": "upwork"    },    {      "id": "•••",      "url": "https://www.upwork.com/jobs/~022103697282534705588",      "title": "Python automation script to batch-generate illustrated storybooks (Claude API + image API)",      "text": "I'm a children's story creator. I need a Python script that runs on its own on my Mac while I'm away.\n\nWhat it should do:\n\nRead a list of story concepts from a file.\nRead one fixed style spec file (format, page count, characters, tone), used in every call.\nCall the Claude API to …",      "budget": 1000,      "budget_currency": "USD",      "hourly_rate_min": 1000,      "hourly_rate_max": 1000,      "job_type": "FIXED",      "experience_level": "IntermediateLevel",      "duration": "1 to 3 months",      "proposals": 45,      "persons_to_hire": 1,      "posted_at": "2026-09-26T07:05:29.443000+00:00",      "tags": [        "Python",        "Automation",        "Scripting"      ],      "client_location": "Singapore",      "client_rating": 0,      "client_review_count": 0,      "client_total_spent": 0,      "payment_verified": true,      "platform": "upwork"    }  ],  "count": 20,  "billing": {    "charged": …,    "charged_usd": …,    "balance_after_usd": …,    …  },  "quota": { … }}

Campi della risposta

#

I dati di business si trovano in results. La tabella elenca i campi che un record può contenere; i valori che la piattaforma non mostra non vengono mai inventati.

CampoSignificato
idID univoco del record sulla piattaforma. È univoco solo all'interno di una piattaforma; gli ID possono ripetersi tra piattaforme diverse.
urlLink al record sulla piattaforma.
titleTitolo. null quando la piattaforma non prevede titoli (ad esempio post di solo testo).
textTesto del contenuto senza HTML, restituito per intero e mai troncato (su alcune piattaforme i risultati degli elenchi contengono solo un estratto; lo indicano le note sui campi della piattaforma).
budgetMantiene il significato attribuito dalla piattaforma
budget_currencyMantiene il significato attribuito dalla piattaforma
hourly_rate_minMantiene il significato attribuito dalla piattaforma
hourly_rate_maxMantiene il significato attribuito dalla piattaforma
job_typeMantiene il significato attribuito dalla piattaforma
experience_levelMantiene il significato attribuito dalla piattaforma
engagement_typeMantiene il significato attribuito dalla piattaforma
durationMantiene il significato attribuito dalla piattaforma
proposalsMantiene il significato attribuito dalla piattaforma
persons_to_hireMantiene il significato attribuito dalla piattaforma
posted_atData e ora di pubblicazione in formato ISO 8601, UTC (ad esempio 2026-08-07T12:34:56+00:00). Le stringhe non standard della piattaforma vengono passate così come sono, quindi esegui il parsing in modo difensivo. null significa che la piattaforma non le rende note.
tagsArray di tag. Se non ce ne sono, è un array vuoto, non null.
client_nameMantiene il significato attribuito dalla piattaforma
client_locationMantiene il significato attribuito dalla piattaforma
client_ratingMantiene il significato attribuito dalla piattaforma
client_review_countMantiene il significato attribuito dalla piattaforma
client_total_spentMantiene il significato attribuito dalla piattaforma
client_hire_rateMantiene il significato attribuito dalla piattaforma
client_avg_hourly_rateMantiene il significato attribuito dalla piattaforma
payment_verifiedMantiene il significato attribuito dalla piattaforma
emailIndirizzo email di contatto, passato così com'è.
emailsIndirizzi email di contatto (un record può averne più di uno), passati così come sono e senza duplicati.
phoneNumero di telefono di contatto, passato senza normalizzarne il formato.
platformIdentificativo della piattaforma di origine, uguale a platform nella richiesta (ad esempio xiaohongshu, tiktok).

FAQ

#

Posso cercare freelance invece di lavori?

#

Non con questa funzionalità: keyword trova i lavori pubblicati dai clienti. Per trovare chi accetta incarichi, usa la funzionalità Upwork Freelancers, che accetta una parola chiave relativa a una competenza e può filtrare i risultati per continente e per stato Top Rated.

Come escludo i lavori che contengono una determinata parola?

#

Passa exclude_keywords come oggetto, non come semplice stringa, ad esempio {"keywords": ["WordPress"], "matchTitle": true, "matchDescription": true, "matchSkills": true}. L'elenco contiene le parole da escludere, mentre i tre interruttori indicano se cercarle nel titolo del lavoro, nella descrizione e nell'elenco delle competenze.

Come valuto se vale la pena fare un'offerta a un cliente?

#

Parti da client_total_spent, la spesa totale del cliente su Upwork, che è il segnale più solido di un cliente affidabile. Poi controlla payment_verified, perché i metodi di pagamento non verificati comportano un rischio maggiore di mancato pagamento, e client_hire_rate: una percentuale bassa indica che il cliente pubblica spesso senza assumere. Leggi client_rating insieme a client_review_count.

Errori e addebiti

#
401
Chiave mancante o non valida.
402
Saldo insufficiente. Effettua prima una ricarica.
422
Nome o valore del parametro non valido. Correggilo seguendo i suggerimenti dell'errore. Nessun addebito.
429
Raggiunto il limite di richieste al minuto. Attendi il tempo indicato da Retry-After, poi riprova.
503
Impossibile completare. L'importo trattenuto torna sul tuo saldo. Se l'esito è incerto, verificalo prima di riprovare.
Risposta 200 vuota
Nessun dato. Nessun addebito.

Errori

Riferimenti ufficiali

#

Usati solo per verificare oggetti e terminologia. Non implicano alcuna autorizzazione o approvazione di EveryInfra da parte della piattaforma.

  • Upwork: contratti a ore o a prezzo fisso ↗

    Upwork distingue i contratti con fatturazione oraria dai contratti a prezzo fisso, basati sull'ambito complessivo del progetto o su milestone. Il parametro job_type di questa azione classifica le offerte di lavoro; non offre funzioni ufficiali della piattaforma come la registrazione delle ore, i pagamenti in escrow o la gestione delle milestone.

    Verificato il 2026-09-04

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