Récupérer des offres
Lister avec des filtres, paginer par curseur, lire le détail d'une offre.
Lister
const page = await talentsalve.offers.list({
continent: "Europe",
q: "comptable", // 3 à 80 caractères, cherché dans le titre, l'entreprise et la description
limit: 25, // de 1 à 100 (25 par défaut)
})Les filtres de lieu, d'entreprise et de domaine prennent des identifiants (des UUID), pas des noms. On les lit dans les facettes :
const facets = await talentsalve.facets.get()
const france = facets.ok ? facets.value.countries.find((c) => c.name === "France") : undefined
if (france) {
const page = await talentsalve.offers.list({ country: france.id, limit: 25 })
}Les filtres disponibles sont ceux de la planète, tous facultatifs :
| Champ | Rôle |
|---|---|
continent | un nom parmi Africa, Americas, Asia, Europe, Oceania, Polar (la constante CONTINENTS est exportée) |
country, region, city | lieu, par identifiant |
company | entreprise, par identifiant |
domain | domaine d'emploi, par identifiant |
q | recherche texte |
bbox | uniquement les offres situées dans une zone (la zone visible d'une carte) |
Les valeurs vides sont ignorées. Les offres sont triées de la plus récente à la plus ancienne.
Forme d'une offre de la liste
type OfferItem = {
id: string
title: string
company: { id: string; name: string; logoUrl?: string; kind?: string }
employmentType?: string
seniorityLevel?: string
isRemote: boolean
locationRaw?: string
city?: { id: string; name: string }
region?: { id: string; name: string }
country?: { id: string; name: string }
lat?: number
lng?: number
publishedAt?: string
foundAt?: string
contractKind: string
}La liste ne contient pas l'adresse de la page de l'offre : elle se lit dans le détail.
Paginer
La page renvoie items, un nextCursor quand il y a une suite, et total (première page). Passez nextCursor comme cursor pour la page suivante :
let cursor: string | undefined
do {
const result = await talentsalve.offers.list({ continent: "Europe", limit: 100, cursor })
if (!result.ok) break
for (const offer of result.value.items) console.log(offer.id, offer.title)
cursor = result.value.nextCursor
} while (cursor)Respectez la limitation de débit : en cas de RateLimitedError, attendez avant de reprendre (voir Gérer les erreurs).
Lire le détail
const detail = await talentsalve.offers.get("<identifiant de l'offre>")
if (detail.ok) {
console.log(detail.value.description) // texte de l'offre
console.log(detail.value.url) // page de l'offre chez l'employeur
}Un identifiant inconnu donne une NotFoundError.