Talentsalve

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 :

ChampRôle
continentun nom parmi Africa, Americas, Asia, Europe, Oceania, Polar (la constante CONTINENTS est exportée)
country, region, citylieu, par identifiant
companyentreprise, par identifiant
domaindomaine d'emploi, par identifiant
qrecherche texte
bboxuniquement 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.

On this page