public

Find people from public data

Changed on

Find people from public profiles: found profiles save as contacts and render as a people list you narrate with a one-line count. One ask is one call: every plausible title, seniority or city as an array on the SAME field, any headline signal in filters.keywords, limit (1-100, default 15) set by the number or volume word they used, sentence added when they named one person rather than a crowd, and more:true, excludeWords or excludeProfiles only to continue or refine a search that already ran. When companies to leave out or a company size are set, the answer says how many people it left out: say so. The people come from our index, about 3 weeks old at the median, so a recent job move can be missing; a search answers in about 2 seconds, and one in ten takes about 10 or more. Cost: each search costs by the results it brings back: 4 credits for up to 10, 11 for 25, 49 for 100; reading the profiles adds 1 credit for every 2, and a company size check 1 credit for every 2 companies; people already saved come at no cost. creditsUsed says what the call spent.

post/public/search

Request

  • Base URL: https://api.bereach.ai
  • URL: https://api.bereach.ai/public/search
  • Auth: HTTP bearer

Request body

limitinteger

How many NEW profiles to fetch, up to 100 in one request; already-saved people the search also finds are added on top at no cost, so the result can run over this number without the limit having been ignored. For more than 100, ask again with more:true: it continues where this one stopped rather than paying for the same people twice.

perCompanyinteger

With two or more companies named in filters.company: how many people to find at each; it replaces limit. Put every company the person listed in that one list, in their order. Each company is searched in its own country, so leave location empty unless they asked for people in one place.

like'list'

Look for people at companies like the ones the people in this chat's list work at, never at a company already in it; filters.title holds the roles to look for there.

likeCompaniesstring[]

Companies the user gives as examples, such as their clients: finds people at companies like them, never at these; filters.title holds the roles to look for there.

save'keep' | 'skip' | 'ask'

keep (the default) when the people are the list being built, skip only when this search is certainly a step toward one person's posts or audience or a check of who somebody is, ask when unsure; narrow first rather than keep then remove; report what was actually written.

moreboolean

Continue an earlier search on these same filters instead of returning its people again.

sentencestring

The person's own words, sent only when they asked for somebody in particular rather than a crowd: a named person, a role at a named organisation, everyone there, or people who used to work there. Always sent alongside the facets, never instead of them, so the search can answer the named question directly rather than slicing a market that has no such answer.

verifiedboolean

Verified-identity constraint. Not searchable here: echoed under notSearched.

Response

Found and enriched people

source'public' required
providerstring required

Which search answered.

querystring required

The exact query sent, so a thin result set can be read rather than guessed at.

existingCountinteger

How many of the people returned were already in your contacts. They ARE in contacts like everyone else, marked completeness "already-a-contact", and were not re-fetched because their profile was already read once. Absent when there were none. Not a reason to search again: the search already answered.

exhaustionNotestring

Present when the search could not reach the market that was asked for: everything that came back was about a different subject, so nobody is returned rather than strangers. In words ready to relay; relay it rather than presenting the answer as an empty market.

laneNotestring

Present when a company's people were found from public pages: it reaches part of the team rather than the full payroll. Relay it verbatim.

refused'nothing-to-search' | 'wants-companies' | 'off-topic' | 'wants-a-plan'

Set when the request could not be answered. 'nothing-to-search' means nothing in it named anybody. 'wants-companies' means it asked for organisations, which this operation does not find: use the company search instead. 'off-topic' means the index answered about a different subject, so nobody it returned was shown: that is a market this search could not reach, never an empty market. 'wants-a-plan' means an agent asked for a crowd described by role, kind of company or place, which is a plan of searches (plan-searches), not this lookup; planNote says so. None of the four is a retry, say what happened and change the request.

planNotestring

With wants-a-plan: where a crowd goes instead, in one sentence, to follow as written.

notFoundstring[]

What you named that the search could not find: a person, a company nobody says in public they work at, or a role nobody there holds. When this is set, no result is that: say so rather than presenting the people returned as them.

notFoundNotestring

With notFound: the next step to offer.

respelledNotestring

Set when a company found nobody as written and was searched under the name it most likely means: which name was searched.

urlsFoundinteger required

Total profile URLs found.

newUrlsinteger required

Profiles fetched on this call. People already in your contacts are returned too, from the search result, without being fetched again.

hydratedinteger required

Profiles fetched and enriched in this call.

searchesinteger

How many searches it took to find these people.

searchesFailedinteger

Searches that could not run. When this is high the result says nothing about the market.

moreAvailableboolean

True while asking again with more can still reach people you have not seen. Absent once this ask is walked out, which is not a failure.

exhaustion'more-available' | 'axes-exhausted' | 'batch-failed'

Finer than moreAvailable: 'axes-exhausted' means every search angle for this audience has genuinely been tried, calling again with more will not find anybody new. 'batch-failed' means this attempt could not run, worth retrying. 'more-available' is the ordinary case.

sizeNotestring

The size filter's counts in one sentence, to relay as written.

exclusionNotestring

The exclusions' counts in one sentence, to relay as written.

roleNotestring

The window's counts in one sentence, to relay as written.

employerNotestring

Those counts in one sentence, to relay as written.

namedCompaniesNotestring

Those outcomes in one sentence, to relay as written.

likeNotestring

That search in one sentence, to relay as written.

rateLimitedinteger

Profiles found but not yet read because reads are paced right now.

timedOutinteger

Profiles found but not fetched before this answer had to go back. Real matches, not the full result set: asking again fetches the rest.

notestring

Explanation when part of the result set was deferred.

allAlreadyInListboolean

Every person this search found is already in the list, so nobody new was added. The search worked and the people are right: repeating it finds the same people, and only a different ask finds different ones.

alreadyInListNotestring

Plain-English form of allAlreadyInList, to be relayed rather than reworded.

unreadableinteger

Profiles found but whose page could not be read, so they were not saved. These people exist and the search was right about them; asking again in other words, or more widely, does not change it.

creditsExhaustedinteger

Profiles found but not read because the workspace credit pool emptied part way through. Real matches, not the full result set.

creditsUsedinteger

Credits this call spent: the searches and the profiles read.

duplicatesinteger

People this continuation found again that an earlier call on the same filters already returned. They were filtered out without being re-fetched or re-charged.

queriesstring[]

Every query this call actually executed, so a multi-part ask can be read rather than guessed at. query above stays the single representative one.

pooledinteger

How many of these people were linked into the target list or conversation. Zero alongside non-empty results means found but not saved to a list.

poolTargetedboolean

Whether a target list existed for this call at all; gives pooled its meaning.

listTotalinteger

How many people the list holds in total after this call, counted server side over the same rows the list itself shows. This is the ONLY running total: cite it as it stands and never add it to another number.

excludedCountinteger

Rows dropped by excludeProfiles/excludeWords before fetching, so a refinement is visible and never re-paid.

excludedByWordsinteger

Of excludedCount, the rows dropped by excludeWords.

Changes

    • breaking

      the response's body type changed from object to no type for status

    • breaking

      the response's body type changed from object to no type for status

    • breaking

      the response's body type changed from object to no type for status

    • breaking

      the response's body type changed from object to no type for status

    • breaking

      the response's body type changed from object to no type for status

    • breaking

      the response's body type changed from object to no type for status

    • breaking

      the response's body type changed from object to no type for status

    • breaking

      the response's body type changed from object to no type for status

    • breaking

      the response's body type changed from object to no type for status

    • breaking

      the response's body type changed from object to no type for status

    • breaking

      the response's body type changed from object to no type for status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • info

      added subschema #1 subschema #2 to the response body anyOf list for the response status

    • info

      added subschema #1 subschema #2 to the response body anyOf list for the response status

    • info

      added subschema #1 subschema #2 to the response body anyOf list for the response status

    • info

      added subschema #1 subschema #2 to the response body anyOf list for the response status

    • info

      added subschema #1 subschema #2 to the response body anyOf list for the response status

    • info

      added subschema #1 subschema #2 to the response body anyOf list for the response status

    • info

      added subschema #1 subschema #2 to the response body anyOf list for the response status

    • info

      added subschema #1 subschema #2 to the response body anyOf list for the response status

    • info

      added subschema #1 subschema #2 to the response body anyOf list for the response status

    • info

      added subschema #1 subschema #2 to the response body anyOf list for the response status

    • info

      added subschema #1 subschema #2 to the response body anyOf list for the response status

    • info

      added the new optional request property

    • info

      added the optional property to the response with the status