Skip to main content
Die Such-Endpunkte von Pubrio (/companies/search, /people/search, /companies/advertisements/search) teilen sich eine einzige Filter-Engine. Sie stellen einen Anfrage-Body einmal zusammen, und dieselben Regeln gelten über alle Endpunkte hinweg — einschließlich der Art, wie Mehrwert-Filter kombiniert werden, wie Standorte abgeglichen werden und wie Sie den Standardoperator mit filter_conditions überschreiben.

Warum eine einheitliche Filter-Engine?

Ein Schema, drei Endpunkte

Filter auf Unternehmensebene wie technologies, verticals und founded_dates funktionieren identisch auf /companies/search, /people/search und innerhalb von Monitor-company_filters — Sie lernen sie einmal.

AND/OR pro Filter

Der Standard ist OR (beliebiger Treffer). Heben Sie einzelne Filter auf AND (jeder muss zutreffen) an, indem Sie einen Eintrag zu filter_conditions hinzufügen — ohne den Rest des Bodys zu ändern.

Gefiltert, bevor Sie blättern

Jeder Filter wird angewendet, bevor Ergebnisse zurückgegeben werden, sodass jede Seite und jede Gesamtzahl Ihre gesamte Anfrage widerspiegelt. Keine anwendungsseitige Nachfilterung.

Dieselben Filter in Monitoren

Der company_filters-Block in Monitoren akzeptiert dieselbe Form, sodass ein funktionierender Such-Payload auch ein funktionierender Monitor-Payload ist.

Aufbau einer Suchanfrage

Jede Suchanfrage besteht aus drei Ebenen im selben JSON-Body: Eine minimale /people/search-Anfrage, die alle drei Ebenen nutzt:

company_filters: Unternehmensschlüssel gruppiert halten

Das Wrapper-Objekt company_filters: {...} ist die empfohlene Art, Filter auf Unternehmensebene zu senden — es trennt visuell, welche Schlüssel die Person filtern und welche das Unternehmen, und entspricht der Form, die Monitore bereits verwenden, sodass Payloads sauber zwischen Such- und Monitor-Konfigurationen übertragbar sind. Beide Stile funktionieren; die Engine flacht die eingebettete Form vor der Verarbeitung auf die oberste Ebene ab, und Schlüssel auf oberster Ebene gewinnen bei Konflikten:
Wenn Sie eine filter_conditions-Überschreibung für einen Unternehmensschlüssel hinzufügen, platzieren Sie diese innerhalb von company_filters, damit sie mit den überschriebenen Schlüsseln zusammenbleibt.

Dieselbe Form bei den /search/similar-Varianten

POST /companies/search/similar und POST /people/search/similar akzeptieren denselben Filter-Body wie ihre nicht-ähnlichen Gegenstücke (einschließlich des company_filters-Wrappers und filter_conditions). Jeder fügt zusätzlich einen Ähnlichkeitsschritt hinzu: Filter grenzen den Kandidatenpool ein, bevor die Ähnlichkeit angewendet wird — die Kombination von company_locations: ["US"] mit /people/search/similar liefert also die ähnlichsten US-basierten Personen zu Ihren Referenztiteln, das Muster „finde mehr Personen wie X innerhalb dieser Einschränkungen”.
/companies/search/similar gibt data als einfaches Array von Unternehmen zurück — es gibt kein pagination-Objekt. Blättern Sie mit page und per_page durch die Ergebnisse. Verwenden Sie die Ähnlichkeitssuche, um die besten Treffer zu finden, nicht um jeden einzelnen aufzuzählen.

AND vs. OR — die eine Entscheidung pro Filter

Mehrwert-Filter (technologies, verticals, keywords, categories, …) akzeptieren ein Array. Der Operator entscheidet, was „Treffer” bedeutet:
Beliebiger Treffer. Liefert Zeilen, deren Array sich mit der Eingabe überschneidet.
Ein Unternehmen wird einbezogen, wenn sein Tech-Stack mindestens eines von Python, PostgreSQL oder Kubernetes enthält.Verwenden, wenn: Sie breite Reichweite möchten — „interessiert an einem beliebigen dieser”, „in einem beliebigen dieser Länder ansässig”.
Nicht in filter_conditions aufgeführte Filter verwenden den Standardoperator (OR innerhalb eines Arrays, AND über unterschiedliche Filterschlüssel hinweg). Sie deklarieren nur die Überschreibungen — nie die Standardwerte.

Was Sie überschreiben können

Jeder Endpunkt akzeptiert Überschreibungen für eine andere Schlüsselmenge. Die Schlüssel stammen aus dem OpenAPI-Enum jedes *_filter_conditions-Schemas:

Unternehmens-Endpunkt

company_filter_conditions-Schlüssel: keywords, verticals, vertical_categories, vertical_sub_categories, technologies, categories, social_media, advertisement_target_locations, job_exclude_locations.

Personen-Endpunkt

people_filter_conditions-Schlüssel: keywords, verticals, vertical_categories, vertical_sub_categories, technologies, categories, social_media.

Anzeigen-Endpunkt

ads_filter_conditions-Schlüssel: target_locations, publisher_platforms.
Standort- und Ortsfilter treffen immer auf jeden beliebigen aufgeführten Wert zu, bei jedem Endpunkt. filter_conditions ändert daran nichts.

Performance-Tipps

Standorte, Mitarbeiter-Bucketwerte und founded_dates reduzieren die Kandidatenmenge schneller als Freitext- oder Vertical-Filter. Kombinieren Sie sie mit ein oder zwei präzisen Filtern, bevor Sie zur Ähnlichkeitssuche greifen.
AND verlangt, dass jeder Wert vorhanden ist. Ein AND mit 10 Technologien liefert fast null Zeilen. Bevorzugen Sie 2–4 Werte pro AND-Filter; wechseln Sie zu OR für explorative Abfragen.
Wenn Sie keine Slug-IDs (Verticals, Technologien, Kategorien) angeben können und nur Freitext-Strings haben, setzen Sie is_enable_similarity_search: true und similarity_score: 0.7. Die Engine löst Treffer auf, bevor der Filter angewendet wird — deutlich günstiger als das Durchsuchen von Text.
employees: [[201, 500], [501, 1000]] (ein Array von Buckets) und revenues: [1000000, 5000000] (ein einzelner Min-/Max-Bereich) sind schneller und idiomatischer als lange ID-Listen.

Filter für Werbeaktivität

/companies/search kann nach dem Werbeprofil eines Unternehmens filtern — wie viele Anzeigen es schaltet, ob welche aktuell aktiv sind, welche Plattformen und Formate es nutzt und wie es im Vergleich zu anderen Werbetreibenden in einem bestimmten Land rangiert. POST /companies/advertisements/search akzeptiert jeden dieser Filter ebenfalls (advertisement_active_ads, advertisement_running_ads, advertisement_total_ads, advertisement_platform_count, advertisement_format_count, advertisement_impressions_estimate, advertisement_formats, advertisement_country_activity) — eine Anzeige wird einbezogen, wenn das zugehörige Unternehmen die Bedingung erfüllt. Verwenden Sie null für eine offene Grenze — [1, null] bedeutet „mindestens 1”, [null, 500] bedeutet „500 oder weniger”.

Rangfolge innerhalb eines Landes

advertisement_country_activity bezieht Rang, Perzentil und Volumen-Score jeweils auf ein Land — der Anzeigenrang eines Unternehmens in den USA sagt nichts über seinen Rang in Deutschland aus, daher ist country erforderlich:
rank zählt vom größten Werbetreibenden abwärts, wie bei einem Rennen. 1 ist der größte Werbetreibende in diesem Land, und die Zahl steigt, während das Werbevolumen sinkt. Um die größten Werbetreibenden zu finden, filtern Sie rank mit einer niedrigen Obergrenze — [null, 500] sind die Top 500. Ein Filter von [500, null] findet alle außerhalb der Top 499, das Gegenteil von „großer Werbetreibender”. Wenn Sie eine skalenunabhängige Version möchten, die unabhängig von der Anzahl der Werbetreibenden in diesem Land gleich funktioniert, verwenden Sie stattdessen percentile — sie läuft in die andere Richtung, sodass eine höhere Zahl einen größeren Werbetreibenden bedeutet: [90, null] sind die Top 10 %.
Kombinieren Sie advertisement_country_activity mit den obigen länderübergreifenden Filtern in derselben Anfrage — zum Beispiel „unter den Top 500 in den USA rangiert und unternehmensweit mindestens 100 aktive Anzeigen”:

Rangfolge der Ergebnisse

Ein Filter auf advertisement_country_activity grenzt ein, welche Unternehmen zurückkommen; über die Reihenfolge entscheidet er für sich genommen nicht. Um die größten Werbetreibenden dieses Marktes zuerst zu erhalten, fordern Sie sort_by: "advertisement_country_rank" an:
Sobald advertisement_country_activity gesetzt ist, führt jedes Unternehmen zusätzlich seine Position in diesem Land mit, sodass Sie den Rang anzeigen können, nach dem Sie gefiltert haben: sort_by: "advertisement_country_rank" wird ignoriert, wenn advertisement_country_activity fehlt, denn einen Rang gibt es nur innerhalb eines Landes. Übergeben Sie is_ascending_order: false, um die kleinsten Werbetreibenden des Marktes zuerst aufzulisten.

Neue Marktteilnehmer finden

advertisement_country_activity akzeptiert außerdem zwei Zeitfenster, sodass Sie fragen können, wer in einem Markt mit Werbung begonnen hat, statt wer dort bereits groß ist: Unternehmen, die seit Anfang Juli in Japan eingestiegen sind:
Jede Grenze darf null sein, um das Fenster nach einer Seite offen zu lassen. Datumsangaben werden in der Zeitzone der Anfrage interpretiert. Ein Unternehmen, dessen Anzeigen kein Startdatum tragen, hat keinen Erstsichtungswert und gilt als unbekannt — es wird nie als neu gemeldet. Kombinieren Sie den Filter mit den Rangschlüsseln im selben Objekt, um weiter einzugrenzen, zum Beispiel neue Marktteilnehmer, die bereits viel in Werbung investieren.

Nächste Schritte

filter_conditions

Referenzseite — jeder unterstützte Schlüssel, jeder Standard und kopierbare AND-/OR-Rezepte.

People + Company Filters

Verwenden Sie jeden Unternehmensfilter innerhalb von /people/search. Die Hauptfunktion der einheitlichen Engine.

Company Search reference

Vollständiges Anfrage-/Antwortschema für /companies/search.

People Search reference

Vollständiges Anfrage-/Antwortschema für /people/search.
Suchen Sie die Anleitung zum dashboardseitigen Filtern? Siehe Filtering & Exporting Contacts in der Knowledge Base.
Zuletzt geändert am 29. September 2026