apollo
apollo.
Find companies by firmographics — the CHEAP way to qualify a list.
setup & usage
crée une clé api dans les réglages développeur/api de ton compte apollo.
/accountune clé plateforme free-tier (quota quotidien) si tu n'en poses pas la tienne — elle
interroge la base PARTAGÉE Apollo, la même pour tout le monde.
apollo_match_person refuse en NOMMANT le compteur (used/limit) etdit qu'il repart à minuit — la réponse d'un appel réussi porte aussi platform_quota
(used/limit/remaining) pour t'arrêter avant le refus au milieu d'un lot. Pose ta
propre clé pour lever la limite tout de suite, ou pour CE lead : hunter_email_finder
(email) et kaspr_enrich_linkedin / fullenrich_enrich_linkedin (téléphone,
historique LinkedIn) — source différente, pas de crédit brûlé sur un appel qui
échouerait de toute façon.
Apollo facture un reveal EN PLUS du match, alors que notre compteur plateforme ne sait
débiter qu'un match nu. C'est vrai du téléphone (~9 crédits là où un match nu en coûte
1) comme des emails personnels (pot distinct, barème selon le plan — écart non mesuré,
donc pas débitable non plus). apollo_match_person continue de marcher sans ta clé, il
ne rend simplement ni mobile, ni direct dial, ni email personnel.
sur ces outils-là, il te faut ta propre clé. Pas seulement pour écrire : même les lister
ou les lire rend TES données (ton carnet de contacts, tes boîtes connectées, le contenu
de tes emails envoyés, tes transcripts d'appels) — une clé plateforme mutualisée
exposerait ça à n'importe quel autre utilisateur d'oto.
Integrations → API) : une clé standard authentifie mais rend 403 sur ces trois-là.
recherche et enrichis entreprises et personnes, et repère les signaux de recrutement.
apollo_search_organizations — entreprises par nom, domaine, paysapollo_search_people — personnes par domaines, départements, intitulés, sénioritésapollo_match_person — enrichit une personne (url linkedin ou email = meilleurs identifiants)apollo_bulk_match — jusqu'à 10 personnes en UN appel, la forme qu'emploie uneconstruction de liste : un search rend des centaines de noms obfusqués, et c'est par
là qu'on les révèle (300 personnes = 30 appels, pas 300). ⚠️ **le lot n'économise
aucun crédit** — apollo facture à la PERSONNE, exactement comme 10 appels unitaires ;
ce qu'il économise, ce sont les appels et le rate limit. les reveals (emails
personnels, téléphones) y demandent ta propre clé, comme en unitaire.
apollo_job_postings — offres d'emploi actives d'une entreprise (signal d'embauche)⚠️ la fiche entreprise imbriquée est allégée par défaut sur apollo_match_person et
apollo_bulk_match : stack technique, levées de fonds, filiales et mots-clés pesaient
91 % du payload — un seul match sortait à 60 000 caractères et dépassait la limite de
sortie des clients MCP. le nom, le domaine, le téléphone, l'effectif et le secteur
restent ; full=True rend le brut, au même prix. en lot, chaque fiche perd aussi
employment_history et account (la fiche société de ton CRM apollo) : sans ça, un
lot de 10 sortait à ~86 000 caractères.
⚠️ le seul geste d'apollo qui ne rend pas son résultat. apollo ne renvoie jamais un
mobile dans la réponse : il le vérifie de son côté et le POSTe à une url, quelques
minutes plus tard. la réponse immédiate ne porte qu'un request_id.
apollo_reveal_phone(webhook_url=…, person_id=…) — commande le reveal. ta propre cléapollo, ~9 crédits. webhook_url est obligatoire côté apollo : c'est une url
HTTPS que TU contrôles (un endpoint n8n ou make, ton service) — **oto n'est pas un
receveur de webhook**, et ne voit pas ce qui y atterrit.
apollo_reveal_phone_result(request_id) — relit le MÊME contenu, **sans webhook, 0crédit, pendant 30 jours**. c'est par là que le numéro revient à l'agent : tu n'as pas
à lire toi-même ce qu'apollo a posté.
« Master »), d'après la doc apollo — même famille de prérequis que les outils de
contact. à vérifier sur une vraie clé : si elle ne l'a pas, le reveal part quand même
et les numéros arrivent sur ton webhook, mais apollo_reveal_phone_result refusera.
crédits sont dépensés et il ne reste rien à relever. passé 30 jours, le résultat
disparaît pour de bon.
traiter comme non authentifié, et à rendre idempotent.
apollo_match_person(reveal_personal_emails=True) — les emails PERSONNELS, eux,reviennent bien dans la réponse (synchrone), sur ta propre clé apollo (même règle
de coût que le téléphone). apollo les retient pour les personnes en zone RGPD : un
résultat vide est une réponse, pas une panne.
apollo_contact (op=fields|search|get|update) — lis et modifie un contactENREGISTRÉ chez toi : titre, email, téléphones, stage, listes, champs personnalisés
op=search retrouve un contact et son contact_id (tes contacts, pas la basepartagée). ⚠️ L'autre source, souvent déjà payée : apollo_match_person porte le
contact id IMBRIQUÉ à person.contact.id, dès que la personne est un contact chez
toi. Un id d'apollo_search_people est un id de PERSONNE et sera refusé ici.
Le même contact_id sert ensuite à apollo_sequence_contacts(op=add)
apollo_search_people interroge la basepartagée Apollo, apollo_contact ne voit que ce que ton équipe a déjà
enregistré. Une personne trouvée mais jamais enregistrée n'a pas d'id de contact
op=get ne coûte aucun crédit — c'est la façon de relire un contact ;apollo_match_person en coûte un et rend la fiche partagée, pas tes valeurs
op=fields d'abord pour une écriture de champ personnalisé : la charge utileest keyée par id de champ, jamais par nom. Pour une liste de choix, la
valeur à écrire est l'id de l'option, pas son libellé
op=create_field déclare un champ personnalisé sans passer par l'interfaceApollo (utile quand le compte appartient au client). ⚠️ Pour un texte long —
une accroche, un paragraphe — c'est field_type="textarea" : string est
plafonné à 120 caractères et Apollo tronque sans rien dire. Un champ portant
déjà ce nom fait REFUSER la création plutôt que d'en créer un homonyme
Integrations → API) ; une clé standard authentifie mais rend 403
label_names REMPLACE l'appartenance aux listes au lieu de s'y ajouterdry_run disponible sur op=updateapollo_email_accounts / apollo_email_schedules — prérequis en lecture (TES boîtesconnectées / plannings d'envoi), à appeler avant de créer une séquence ou d'y enrôler
des contacts
apollo_sequence (op=search|create|update|activate|deactivate|archive) — gérer uneséquence
apollo_sequence_contacts (op=add|update_status|activity) — enrôler/retirer descontacts, consulter leur activité. add démarre une campagne automatisée vers des
personnes réelles — dry_run disponible
apollo_email (op=draft|send|status|search|content|stats) — draft prépare,send envoie (toujours deux appels distincts). search/content rendent TES emails
envoyés (corps inclus), pas une base partagée
apollo_conversation (op=search|get|export|export_status) — TES transcripts etenregistrements. Le coût crédit d'un get dépend de la présence d'insights IA,
imprévisible avant l'appel
outils
usage
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configured.pipx install oto-cli then oto apollo …