Nach Firmen suchen
Mit search_companies baust und qualifizierst du eine Account-Liste, bevor du an diesen Accounts nach Personen suchst. Der Filter-Wortschatz ist fast identisch mit search_people, du kannst also alles, was du hier lernst, direkt übertragen.
Erst mit limit: 1 antesten, bevor du eine Seite ziehst
Section titled “Erst mit limit: 1 antesten, bevor du eine Seite ziehst”search_companies hat keinen kostenlosen Trockenlauf. count_only gibt es nur bei search_linkedin_profile. Führe deshalb jede neue Suche einmal mit limit: 1 aus, bevor du sie in Menge abrufst.
{ "industry": "Computer Software", "employee_range": "51-200", "revenue_range": "$10M - $20M", "limit": 1 }Ein Datensatz kostet einen Such-Datensatz aus deinem Fair-Use-Pool. Dieselbe Abfrage mit limit: 25, fünf Seiten tief gelaufen, kostet 125. Und jeder Filter hier ist ein Exact-Match, ein einziger falscher String verbraucht also alle 125 für die falsche Liste. Die üblichen Verdächtigen sind alle lautlos: "$1 - $1M" statt "$500k - $1M", "TX" statt "Texas", "Information Technology", wo die Datensätze unter "Computer Software" abgelegt sind, oder ein Länderfilter, der eine multinationale Firma ins falsche Büro zieht.
Lies zwei Dinge aus dem einzelnen Ergebnis, bevor du erweiterst:
results.total: Ist das Account-Universum so groß, wie du erwartet hast? Ein dünner Gesamtwert bedeutet, dass ein Filterwert nicht stimmt, nicht dass das Segment leer ist. Probiere den benachbarten Branchenwert oder kürze dennaics_code.- Der Datensatz selbst: Passt diese Firma wirklich zu deinem Ziel? Prüfe
domain,industry,employee_rangeundlocationgegen das, was du gefragt hast.
Erst dann führst du die Suche mit einem echten limit erneut aus und beginnst zu paginieren.
Such-Datensätze werden getrennt von Enrichment-Datensätzen gedeckelt und pro zurückgegebenem Datensatz verbraucht, in einem rollierenden 5-Stunden-Fenster. Das wird besonders beim Verketten wichtig: Ein search_companies-Ergebnis mit 25 Domains, jede aufgefächert in einen search_people-Aufruf mit limit: 25, sind 625 Such-Datensätze aus einer Schleife. Teste beide Suchen mit limit: 1 an, bevor du die Kette laufen lässt. Siehe Rate Limits.
Filter sind kostenlose Präzision
Section titled “Filter sind kostenlose Präzision”Die Suchkosten werden vom kostenlosen Freitext-query getrieben, nicht von den daran angehängten Filtern.
| Abfrageform | Geschwindigkeit und Präzision |
|---|---|
query allein | Langsamer und ungenauer |
query + beliebig viele Filter | Langsamer, aber präziser |
Nur Filter, kein query | ~40x schneller und präziser |
Daraus folgen zwei Regeln.
Sende nie einen nackten query. industry, employee_range oder revenue_range hinzuzufügen kostet nichts und grenzt das Ergebnis stark ein. Ein reiner Query-Aufruf ist die ungenaueste verfügbare Form und nicht günstiger als eine gefilterte.
Lass query ganz weg, wenn Filter die gesamte Absicht tragen können. Die meisten Account-Listen sind reine Firmografie, “Softwarefirmen mit 51 bis 200 Mitarbeitern und 10 Mio. bis 20 Mio. Umsatz” braucht gar keinen Freitext und läuft ohne ihn ~40x günstiger.
{ "industry": "Computer Software", "employee_range": "51-200", "revenue_range": "$10M - $20M" }Greife nur dann zu query, wenn du eine Firma über den Namen matchst. Alles andere gehört in einen Filter.
Hier geht es um Ausführungskosten, nicht um die Abrechnung. Tokens werden pro zurückgegebenem Datensatz berechnet, unabhängig von der Abfrageform. Eine günstigere Abfrage liefert schneller und belastet die Suchkapazität weniger, ändert aber nicht, was dir berechnet wird.
Nutze domain, wenn du eine hast
Section titled “Nutze domain, wenn du eine hast”Wenn du die Website-Domain kennst, ist domain ein Exact-Match und schlägt immer einen Freitext-query:
{ "domain": "acme.com" }Vollständige URLs werden automatisch normalisiert, https://www.acme.com/about wird zu acme.com. Du musst Protokoll oder Pfad nicht vorher entfernen.
Greife nur dann zu query, wenn du einen Namen und keine Domain hast. Er durchsucht ausschließlich den Firmennamen, domain und industry sind Keyword-Felder und werden davon nicht abgedeckt.
Wähle deine Branchen-Granularität
Section titled “Wähle deine Branchen-Granularität”Wie bei der Personensuche beschreiben drei Filter die Branche in unterschiedlicher Auflösung:
| Filter | Vokabular | Nutze, wenn |
|---|---|---|
industry | 23 primäre Buckets plus Long-Tail-Werte | Du in breiten Kategorien denkst |
linkedin_industry | LinkedIns eigene ~150 Labels | Du eine Nische brauchst, die die Buckets nicht ausdrücken können |
naics_code | Vollständige NAICS-Hierarchie | Du standardisierte Codes willst oder präzise Kontrolle über die Breite |
Das industry-Enum trägt außerdem Long-Tail-Werte: "Insurance", "Banks", "Computer Software", "Pharmaceuticals and Biotechnology", "Aerospace and Defense", "Electronics", "Mining and Metals". Diese überschneiden sich konzeptionell mit den breiten Buckets, eine Firma im Softwarebereich kann also entweder unter "Information Technology" oder unter "Computer Software" abgelegt sein. Wenn eine Suche dünner ausfällt als erwartet, probiere den benachbarten Wert.
naics_code matcht auf jeder Hierarchieebene. Nutze einen 2-stelligen Sektor ("23" = Bauwesen), um breit zu streuen, oder einen 6-stelligen Code ("511210" = Software-Verlage), um eng zu werden. Den Code zu kürzen ist der sauberste Weg, eine Suche zu erweitern, die zu wenig zurückgibt.
Verstehe den Standort-Fallstrick
Section titled “Verstehe den Standort-Fallstrick”country und state filtern den Standort der Firma, aber dieser Standort wird daraus abgeleitet, wo das Team der Firma sitzt.
Das ist für die kleinen Firmen, die den Index dominieren, genau. Große multinationale Firmen werden jedoch einem einzelnen ihrer Büros zugeordnet. Eine globale Firma mit Hauptsitz in einem Land kann in einem völlig anderen aufgelöst werden. Wenn du große oder internationale Firmen targetierst, kombiniere den Standort mit anderen Filtern, statt dich allein darauf zu verlassen.
Beide erfordern exakt gespeicherte Werte mit Standard-Großschreibung, "Texas", nicht "TX". Kombiniere state mit country für Präzision.
Achte auf die Größen- und Umsatzverteilung
Section titled “Achte auf die Größen- und Umsatzverteilung”Beide Range-Filter sind Exact-Match, und beide haben eine stark schiefe Verteilung.
employee_range: "1-10" ist mit großem Abstand der häufigste Wert. Eine auf kleine Bänder gefilterte Suche gibt sehr viel zurück, eine auf "5001+" gefilterte sehr wenig.
| Wert | Liest sich als |
|---|---|
"1-10" | Solo, Mikro, sehr klein, mit Abstand am häufigsten |
"11-20" | Winziges Team |
"21-50" | Kleines Startup |
"51-200" | Klein bis mittel |
"201-500" | Mittelgroß |
"501-1000" | |
"1001-5000" | Groß |
"5001+" | Enterprise, sehr groß |
Die Legacy-Werte "Small", "Mid-Market", "Enterprise" und "Unknown" existieren ebenfalls. Bevorzuge die numerischen Ranges, sie haben weitaus mehr Abdeckung.
revenue_range: "$500k - $1M" ist das häufigste Band.
"$1 - $1M" ist ein Legacy-Format, das denselben Bereich wie "$500k - $1M" abdeckt, aber weitaus weniger Datensätze hält. Bevorzuge immer "$500k - $1M", sonst verpasst du den Großteil des Bandes.
Firmen aus Traffic identifizieren
Section titled “Firmen aus Traffic identifizieren”ip_to_company löst eine IPv4-Adresse zur Domain der dahinterstehenden Organisation auf, nützlich, um Website-Besucher zu de-anonymisieren und account-basierte Workflows auszulösen.
{ "ip_address": "8.8.8.8" }Das ist ein B2B-Werkzeug. Consumer-ISP-Adressen lösen sich typischerweise nicht zu einer benannten Firma auf, rechne also bei allgemeinem Web-Traffic mit einer nennenswerten Fehlerquote.
Firmensuche in Personensuche verketten
Section titled “Firmensuche in Personensuche verketten”Der häufigste Workflow sind zwei Aufrufe: Accounts qualifizieren, dann Kontakte an ihnen finden.
search_companiesmit deinen firmografischen Filtern gibt dir eine Liste von Domainssearch_peoplemitcompany_domainauf jede Domain gesetzt gibt dir Kontakte
const companies = await search("search_companies", { industry: "Computer Software", employee_range: "51-200", revenue_range: "$10M - $20M", limit: 25});
for (const company of companies.results.results) { const people = await search("search_people", { company_domain: company.domain, seniority: "VP", limit: 25 });}Führe die erste Iteration dieser Schleife mit limit: 1 auf beiden Aufrufen aus. Eine Kette, die bei einer Firma pro Account richtig aussieht, kannst du gefahrlos auffächern. Eine, die es nicht ist, kostet dich die gesamte Auffächerung, nur um das herauszufinden.
search_people kann auch direkt auf employee_range und revenue_range filtern, angewandt auf den aktuellen Arbeitgeber der Person. Wenn Firmografie der einzige Grund ist, warum du search_companies aufrufst, kannst du es oft überspringen und in einem einzigen Aufruf filtern.
Bewusst paginieren
Section titled “Bewusst paginieren”Ergebnisse werden nach _score gerankt, die erste Seite ist also die stärkste.
| Ergebnisse pro Aufruf | 25 max, 10 Standard |
| Ergebnisse pro Aufruf (Free-Plan) | 5 max |
| Free-Plan Such-Datensätze (lebenslang) | 100 |
Lies results.total, bevor du Seiten durchläufst, und erhöhe dann offset um dein limit. Jede Seite, die du durchläufst, zieht aus demselben Such-Datensatz-Pool, bestätige also mit limit: 1, dass die Suche stimmt, bevor du dich darauf festlegst, sie durchzulaufen.
Verwandt
Section titled “Verwandt”- Nach Personen suchen: Finde Kontakte an den Accounts, die du qualifiziert hast.
- Rate Limits: Such-Datensätze werden getrennt vom Enrichment gedeckelt.