Skip to content

MaintenanceThe former company search endpoint goes into maintenance on November 9Migration guide

SDKs // Python // Resources

client.search

Last verified

Search and count people or companies with the Python SDK, inspect filter fields, and use budgeted iterators with documented parameters and costs.

Search people and companies, count matches, inspect filters, and iterate within a result budget.

MethodEndpointCost
people()POST /v2/search/people1 credit per profile delivered. A page with no profile is free.
iter_people()POST /v2/search/people1 credit per profile delivered. A page with no profile is free.
people_by_prompt()POST /v2/search/people/prompt1 credit per page for the search, plus 1 credit per profile delivered.
iter_people_by_prompt()POST /v2/search/people/prompt1 credit per page for the search, plus 1 credit per profile delivered.
people_lookalike()POST /v2/search/people/lookalike1 credit per profile delivered. A page with no profile is free.
iter_people_lookalike()POST /v2/search/people/lookalike1 credit per profile delivered. A page with no profile is free.
count_people()POST /v2/search/people/countFree.
people_auto_suggestion()POST /v2/search/people/auto-suggestionFree.
organizations()POST /v2/search/organizations1 credit per company delivered. A page with no company is free.
iter_organizations()POST /v2/search/organizations1 credit per company delivered. A page with no company is free.
organizations_by_prompt()POST /v2/search/organizations/prompt1 credit per page for the search, plus 1 credit per company delivered.
iter_organizations_by_prompt()POST /v2/search/organizations/prompt1 credit per page for the search, plus 1 credit per company delivered.
count_organizations()POST /v2/search/organizations/countFree.
people_fields()GET /v2/search/people/available-fieldsFree.
organizations_fields()GET /v2/search/organizations/available-fieldsFree.

Calling conventions

Examples assume RC_API_KEY is set. Replace example ids with ids returned by your own requests. Signatures show the published 0.3.0 synchronous methods. Use the same arguments with the Python async client.

models refers to reversecontact.types. NOT_GIVEN and NotGiven are the SDK's internal markers for omitted arguments. Leave these arguments out of your calls. For API body parameters, passing None sends an explicit null. Transport options use None to inherit their defaults. Timeout means a number of seconds or httpx.Timeout. Supply parameters marked Required to Python or to the API, even when the generated signature permits omission.

JSON response objects expose data, quotas, metadata and http_response. Check optional fields for None. See First call for the response envelope. CSV methods return text and iterators yield items.

HTTP failures raise an APIError subclass based on the response: BadRequestError, AuthenticationError, InsufficientCreditsError, PermissionDeniedError, NotFoundError, ConflictError, GoneError, UnprocessableEntityError, RateLimitError, DailyLimitError, KeyCreditLimitError, UnavailableForLegalReasonsError or InternalServerError. See the error mapping and retry rules.

Set max_results when you use a search iterator. The iterator reduces the final page to the remaining budget and makes no request for 0. A Page has data, next_cursor, count, quotas, has_next_page() and get_next_page(). Prompt searches also expose interpretation. See Search within a budget.

people

Call People search with client.search.people().

Python SDK

Python SDK

def people(
    *,
    first_name: str | NotGiven | None = NOT_GIVEN,
    last_name: str | NotGiven | None = NOT_GIVEN,
    headline: str | NotGiven | None = NOT_GIVEN,
    is_open_to_work: bool | NotGiven | None = NOT_GIVEN,
    is_currently_employed: bool | NotGiven | None = NOT_GIVEN,
    is_premium: bool | NotGiven | None = NOT_GIVEN,
    is_verified: bool | NotGiven | None = NOT_GIVEN,
    followers_count: models.SearchPeopleParamsFollowersCount | dict[str, object] | NotGiven | None = NOT_GIVEN,
    connections_count: models.SearchPeopleParamsConnectionsCount | dict[str, object] | NotGiven | None = NOT_GIVEN,
    position_title: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_position_title: str | list[str] | NotGiven | None = NOT_GIVEN,
    company_name: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_company_name: str | list[str] | NotGiven | None = NOT_GIVEN,
    company_industry: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_company_industry: str | list[str] | NotGiven | None = NOT_GIVEN,
    company_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_company_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    company_linkedin_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_company_linkedin_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    company_public_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_company_public_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_position_title: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_position_title: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_company_name: str | NotGiven | None = NOT_GIVEN,
    exclude_current_company_name: str | NotGiven | None = NOT_GIVEN,
    current_company_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_company_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_company_linkedin_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_company_linkedin_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_company_public_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_company_public_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_company_industry: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_company_employee_count_range: models.SearchPeopleParamsCurrentCompanyEmployeeCountRange | dict[str, object] | NotGiven | None = NOT_GIVEN,
    current_function: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_function: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_sub_function: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_sub_function: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_seniority: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_seniority: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_contract_type: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_contract_type: str | list[str] | NotGiven | None = NOT_GIVEN,
    contract_type: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_contract_type: str | list[str] | NotGiven | None = NOT_GIVEN,
    school_name: str | list[str] | NotGiven | None = NOT_GIVEN,
    school_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    school_linkedin_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    total_experience_months: models.SearchPeopleParamsTotalExperienceMonths | dict[str, object] | NotGiven | None = NOT_GIVEN,
    experience: list[models.SearchPeopleParamsExperienceItem | dict[str, object]] | NotGiven | None = NOT_GIVEN,
    skills: str | list[str] | NotGiven | None = NOT_GIVEN,
    languages: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_languages: str | list[str] | NotGiven | None = NOT_GIVEN,
    keywords: str | NotGiven | None = NOT_GIVEN,
    changed_jobs_within_days: int | NotGiven | None = NOT_GIVEN,
    location: models.SearchPeopleParamsLocation | dict[str, object] | NotGiven | None = NOT_GIVEN,
    max_data_age_date: str | NotGiven | None = NOT_GIVEN,
    cursor: str | NotGiven | None = NOT_GIVEN,
    per_page: int | NotGiven | None = NOT_GIVEN,
    timeout: Timeout | None = None,
    max_retries: int | None = None,
    headers: Mapping[str, str] | None = None,
    **extra: object,
) -> Page[models.PersonFull]: ...

Parameters

NameTypeDescription
first_namestr | NotGiven | NoneOptional. Filter by first name
last_namestr | NotGiven | NoneOptional. Filter by last name
headlinestr | NotGiven | NoneOptional. Match keywords found in the profile headline
is_open_to_workbool | NotGiven | NoneOptional. Restrict to profiles flagged open-to-work
is_currently_employedbool | NotGiven | NoneOptional. Restrict to profiles that have a current employer
is_premiumbool | NotGiven | NoneOptional. Restrict to Social Premium members
is_verifiedbool | NotGiven | NoneOptional. Restrict to profiles with a verification badge
followers_countmodels.SearchPeopleParamsFollowersCount | dict[str, object] | NotGiven | NoneOptional. Follower count range, with inclusive min and max bounds.
connections_countmodels.SearchPeopleParamsConnectionsCount | dict[str, object] | NotGiven | NoneOptional. Connection count range, bounds inclusive. One bound is enough: { "min": 501 } keeps profiles with more than 500 connections
position_titlestr | list[str] | NotGiven | NoneOptional. Current or past position title, or array of titles (OR-matched)
exclude_position_titlestr | list[str] | NotGiven | NoneOptional. Current or past position title, or array of titles, to exclude
company_namestr | list[str] | NotGiven | NoneOptional. Current or past company name, or array of names (OR-matched)
exclude_company_namestr | list[str] | NotGiven | NoneOptional. Current or past company name, or array of names, to exclude
company_industrystr | list[str] | NotGiven | NoneOptional. Current or past company industry, from the same industry list
exclude_company_industrystr | list[str] | NotGiven | NoneOptional. Current or past company industry, or array, to exclude
company_idstr | list[str] | NotGiven | NoneOptional. Current or past company com_... id, or array of ids
exclude_company_idstr | list[str] | NotGiven | NoneOptional. Current or past company com_... id, or array of ids, to exclude
company_linkedin_idstr | list[str] | NotGiven | NoneOptional. Current or past company Social identifier, or array of identifiers
exclude_company_linkedin_idstr | list[str] | NotGiven | NoneOptional. Current or past company Social identifier, or array, to exclude
company_public_idstr | list[str] | NotGiven | NoneOptional. Current or past company public ID or slug, or array
exclude_company_public_idstr | list[str] | NotGiven | NoneOptional. Current or past company public ID or slug, or array, to exclude
current_position_titlestr | list[str] | NotGiven | NoneOptional. Current position title, or array of titles: a person matches if their current title matches any of them
exclude_current_position_titlestr | list[str] | NotGiven | NoneOptional. Current position title, or array of titles, to exclude from results
current_company_namestr | NotGiven | NoneOptional. Match the current employer name
exclude_current_company_namestr | NotGiven | NoneOptional. Exclude the current employer name
current_company_idstr | list[str] | NotGiven | NoneOptional. Reverse Contact internal id (com_...) of the current employer
exclude_current_company_idstr | list[str] | NotGiven | NoneOptional. Current employer com_... id, or array of ids, to exclude
current_company_linkedin_idstr | list[str] | NotGiven | NoneOptional. Current employer Social identifier, or array of identifiers
exclude_current_company_linkedin_idstr | list[str] | NotGiven | NoneOptional. Current employer Social identifier, or array, to exclude
current_company_public_idstr | list[str] | NotGiven | NoneOptional. Current employer public ID or slug, or array
exclude_current_company_public_idstr | list[str] | NotGiven | NoneOptional. Current employer public ID or slug, or array, to exclude
current_company_industrystr | list[str] | NotGiven | NoneOptional. Current employer industry. See Industry values for the full list
current_company_employee_count_rangemodels.SearchPeopleParamsCurrentCompanyEmployeeCountRange | dict[str, object] | NotGiven | NoneOptional. Current employer size range, with inclusive min and max bounds.
current_functionstr | list[str] | NotGiven | NoneOptional. Current function from the position taxonomy
exclude_current_functionstr | list[str] | NotGiven | NoneOptional. Current function, or array of functions, to exclude
current_sub_functionstr | list[str] | NotGiven | NoneOptional. Current sub-function from the position taxonomy
exclude_current_sub_functionstr | list[str] | NotGiven | NoneOptional. Current sub-function, or array of sub-functions, to exclude
current_senioritystr | list[str] | NotGiven | NoneOptional. Current seniority from the position taxonomy
exclude_current_senioritystr | list[str] | NotGiven | NoneOptional. Current seniority, or array of seniorities, to exclude
current_contract_typestr | list[str] | NotGiven | NoneOptional. Contract type of the current position, or array (OR-matched). See Contract types
exclude_current_contract_typestr | list[str] | NotGiven | NoneOptional. Contract type of the current position, or array, to exclude. Requires a positive filter alongside it
contract_typestr | list[str] | NotGiven | NoneOptional. Contract type of any position, current or past, or array (OR-matched)
exclude_contract_typestr | list[str] | NotGiven | NoneOptional. Contract type of any position, current or past, or array, to exclude. Requires a positive filter alongside it
school_namestr | list[str] | NotGiven | NoneOptional. School name, or array of names: a person matches if they attended any of them. See Schools
school_idstr | list[str] | NotGiven | NoneOptional. Reverse Contact school id (sch_...), or array. See Schools
school_linkedin_idstr | list[str] | NotGiven | NoneOptional. School Social identifier, or array. See Schools
total_experience_monthsmodels.SearchPeopleParamsTotalExperienceMonths | dict[str, object] | NotGiven | NoneOptional. Total work experience in months, with inclusive min and max bounds.
experiencelist[models.SearchPeopleParamsExperienceItem | dict[str, object]] | NotGiven | NoneOptional. Past-experience requirements. All entries are AND-combined
skillsstr | list[str] | NotGiven | NoneOptional. Skill name, or array of skill names: a person matches if they list any of them. See Skills
languagesstr | list[str] | NotGiven | NoneOptional. Language name in English, or array: a person matches if they speak any of them. See Languages
exclude_languagesstr | list[str] | NotGiven | NoneOptional. Language name in English, or array, to exclude. Requires a positive filter alongside it
keywordsstr | NotGiven | NoneOptional. Words searched across the whole profile: every word must appear, in any field. See Keywords
changed_jobs_within_daysint | NotGiven | NoneOptional. 30, 60, 90 or 120: the current position started within that many days. See Recent job change
locationmodels.SearchPeopleParamsLocation | dict[str, object] | NotGiven | NoneOptional. Location filters such as countryCode, area, region and city.
max_data_age_datestr | NotGiven | NoneOptional. ISO 8601 datetime. Only returns profiles refreshed after this date
cursorstr | NotGiven | NoneOptional. Opaque cursor returned as metadata.nextCursor. Use this cursor to request the next page
per_pageint | NotGiven | NoneOptional. Profiles per page (1 to 100, default 25)
timeoutTimeout | NoneOptional. Seconds per HTTP attempt, or httpx.Timeout. Uses the client setting when None.
max_retriesint | NoneOptional. Retries after the first HTTP attempt. Uses the client setting when None.
headersMapping[str, str] | NoneOptional. Additional HTTP headers for this call.
**extraobjectOptional. Additional API keyword arguments, including camelCase aliases, passed through to the API.

Returns

Page[models.PersonFull]. A page with records in data, a next_cursor, has_next_page() and get_next_page(). The next-page method reuses the filters and returns None after the last page.

Errors

APIError subclasses follow the HTTP mapping above. APIConnectionError reports transport failures. APITimeoutError reports timed-out attempts. ReverseContactError covers invalid SDK options. Malformed typed response data can raise Pydantic ValidationError.

Example

Python SDK

Python SDK

from reversecontact import ReverseContact

with ReverseContact() as client:
    page = client.search.people(current_function="Marketing", per_page=10)
    for item in page.data:
        if item is not None:
            print(item.to_dict())

iter_people

Call People search with client.search.iter_people().

Python SDK

Python SDK

def iter_people(
    *,
    first_name: str | NotGiven | None = NOT_GIVEN,
    last_name: str | NotGiven | None = NOT_GIVEN,
    headline: str | NotGiven | None = NOT_GIVEN,
    is_open_to_work: bool | NotGiven | None = NOT_GIVEN,
    is_currently_employed: bool | NotGiven | None = NOT_GIVEN,
    is_premium: bool | NotGiven | None = NOT_GIVEN,
    is_verified: bool | NotGiven | None = NOT_GIVEN,
    followers_count: models.SearchPeopleParamsFollowersCount | dict[str, object] | NotGiven | None = NOT_GIVEN,
    connections_count: models.SearchPeopleParamsConnectionsCount | dict[str, object] | NotGiven | None = NOT_GIVEN,
    position_title: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_position_title: str | list[str] | NotGiven | None = NOT_GIVEN,
    company_name: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_company_name: str | list[str] | NotGiven | None = NOT_GIVEN,
    company_industry: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_company_industry: str | list[str] | NotGiven | None = NOT_GIVEN,
    company_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_company_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    company_linkedin_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_company_linkedin_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    company_public_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_company_public_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_position_title: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_position_title: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_company_name: str | NotGiven | None = NOT_GIVEN,
    exclude_current_company_name: str | NotGiven | None = NOT_GIVEN,
    current_company_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_company_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_company_linkedin_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_company_linkedin_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_company_public_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_company_public_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_company_industry: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_company_employee_count_range: models.SearchPeopleParamsCurrentCompanyEmployeeCountRange | dict[str, object] | NotGiven | None = NOT_GIVEN,
    current_function: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_function: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_sub_function: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_sub_function: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_seniority: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_seniority: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_contract_type: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_contract_type: str | list[str] | NotGiven | None = NOT_GIVEN,
    contract_type: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_contract_type: str | list[str] | NotGiven | None = NOT_GIVEN,
    school_name: str | list[str] | NotGiven | None = NOT_GIVEN,
    school_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    school_linkedin_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    total_experience_months: models.SearchPeopleParamsTotalExperienceMonths | dict[str, object] | NotGiven | None = NOT_GIVEN,
    experience: list[models.SearchPeopleParamsExperienceItem | dict[str, object]] | NotGiven | None = NOT_GIVEN,
    skills: str | list[str] | NotGiven | None = NOT_GIVEN,
    languages: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_languages: str | list[str] | NotGiven | None = NOT_GIVEN,
    keywords: str | NotGiven | None = NOT_GIVEN,
    changed_jobs_within_days: int | NotGiven | None = NOT_GIVEN,
    location: models.SearchPeopleParamsLocation | dict[str, object] | NotGiven | None = NOT_GIVEN,
    max_data_age_date: str | NotGiven | None = NOT_GIVEN,
    cursor: str | NotGiven | None = NOT_GIVEN,
    per_page: int | NotGiven | None = NOT_GIVEN,
    timeout: Timeout | None = None,
    max_retries: int | None = None,
    headers: Mapping[str, str] | None = None,
    max_results: int,
    **extra: object,
) -> Iterator[models.PersonFull | None]: ...

Parameters

NameTypeDescription
first_namestr | NotGiven | NoneOptional. Filter by first name
last_namestr | NotGiven | NoneOptional. Filter by last name
headlinestr | NotGiven | NoneOptional. Match keywords found in the profile headline
is_open_to_workbool | NotGiven | NoneOptional. Restrict to profiles flagged open-to-work
is_currently_employedbool | NotGiven | NoneOptional. Restrict to profiles that have a current employer
is_premiumbool | NotGiven | NoneOptional. Restrict to Social Premium members
is_verifiedbool | NotGiven | NoneOptional. Restrict to profiles with a verification badge
followers_countmodels.SearchPeopleParamsFollowersCount | dict[str, object] | NotGiven | NoneOptional. Follower count range, with inclusive min and max bounds.
connections_countmodels.SearchPeopleParamsConnectionsCount | dict[str, object] | NotGiven | NoneOptional. Connection count range, bounds inclusive. One bound is enough: { "min": 501 } keeps profiles with more than 500 connections
position_titlestr | list[str] | NotGiven | NoneOptional. Current or past position title, or array of titles (OR-matched)
exclude_position_titlestr | list[str] | NotGiven | NoneOptional. Current or past position title, or array of titles, to exclude
company_namestr | list[str] | NotGiven | NoneOptional. Current or past company name, or array of names (OR-matched)
exclude_company_namestr | list[str] | NotGiven | NoneOptional. Current or past company name, or array of names, to exclude
company_industrystr | list[str] | NotGiven | NoneOptional. Current or past company industry, from the same industry list
exclude_company_industrystr | list[str] | NotGiven | NoneOptional. Current or past company industry, or array, to exclude
company_idstr | list[str] | NotGiven | NoneOptional. Current or past company com_... id, or array of ids
exclude_company_idstr | list[str] | NotGiven | NoneOptional. Current or past company com_... id, or array of ids, to exclude
company_linkedin_idstr | list[str] | NotGiven | NoneOptional. Current or past company Social identifier, or array of identifiers
exclude_company_linkedin_idstr | list[str] | NotGiven | NoneOptional. Current or past company Social identifier, or array, to exclude
company_public_idstr | list[str] | NotGiven | NoneOptional. Current or past company public ID or slug, or array
exclude_company_public_idstr | list[str] | NotGiven | NoneOptional. Current or past company public ID or slug, or array, to exclude
current_position_titlestr | list[str] | NotGiven | NoneOptional. Current position title, or array of titles: a person matches if their current title matches any of them
exclude_current_position_titlestr | list[str] | NotGiven | NoneOptional. Current position title, or array of titles, to exclude from results
current_company_namestr | NotGiven | NoneOptional. Match the current employer name
exclude_current_company_namestr | NotGiven | NoneOptional. Exclude the current employer name
current_company_idstr | list[str] | NotGiven | NoneOptional. Reverse Contact internal id (com_...) of the current employer
exclude_current_company_idstr | list[str] | NotGiven | NoneOptional. Current employer com_... id, or array of ids, to exclude
current_company_linkedin_idstr | list[str] | NotGiven | NoneOptional. Current employer Social identifier, or array of identifiers
exclude_current_company_linkedin_idstr | list[str] | NotGiven | NoneOptional. Current employer Social identifier, or array, to exclude
current_company_public_idstr | list[str] | NotGiven | NoneOptional. Current employer public ID or slug, or array
exclude_current_company_public_idstr | list[str] | NotGiven | NoneOptional. Current employer public ID or slug, or array, to exclude
current_company_industrystr | list[str] | NotGiven | NoneOptional. Current employer industry. See Industry values for the full list
current_company_employee_count_rangemodels.SearchPeopleParamsCurrentCompanyEmployeeCountRange | dict[str, object] | NotGiven | NoneOptional. Current employer size range, with inclusive min and max bounds.
current_functionstr | list[str] | NotGiven | NoneOptional. Current function from the position taxonomy
exclude_current_functionstr | list[str] | NotGiven | NoneOptional. Current function, or array of functions, to exclude
current_sub_functionstr | list[str] | NotGiven | NoneOptional. Current sub-function from the position taxonomy
exclude_current_sub_functionstr | list[str] | NotGiven | NoneOptional. Current sub-function, or array of sub-functions, to exclude
current_senioritystr | list[str] | NotGiven | NoneOptional. Current seniority from the position taxonomy
exclude_current_senioritystr | list[str] | NotGiven | NoneOptional. Current seniority, or array of seniorities, to exclude
current_contract_typestr | list[str] | NotGiven | NoneOptional. Contract type of the current position, or array (OR-matched). See Contract types
exclude_current_contract_typestr | list[str] | NotGiven | NoneOptional. Contract type of the current position, or array, to exclude. Requires a positive filter alongside it
contract_typestr | list[str] | NotGiven | NoneOptional. Contract type of any position, current or past, or array (OR-matched)
exclude_contract_typestr | list[str] | NotGiven | NoneOptional. Contract type of any position, current or past, or array, to exclude. Requires a positive filter alongside it
school_namestr | list[str] | NotGiven | NoneOptional. School name, or array of names: a person matches if they attended any of them. See Schools
school_idstr | list[str] | NotGiven | NoneOptional. Reverse Contact school id (sch_...), or array. See Schools
school_linkedin_idstr | list[str] | NotGiven | NoneOptional. School Social identifier, or array. See Schools
total_experience_monthsmodels.SearchPeopleParamsTotalExperienceMonths | dict[str, object] | NotGiven | NoneOptional. Total work experience in months, with inclusive min and max bounds.
experiencelist[models.SearchPeopleParamsExperienceItem | dict[str, object]] | NotGiven | NoneOptional. Past-experience requirements. All entries are AND-combined
skillsstr | list[str] | NotGiven | NoneOptional. Skill name, or array of skill names: a person matches if they list any of them. See Skills
languagesstr | list[str] | NotGiven | NoneOptional. Language name in English, or array: a person matches if they speak any of them. See Languages
exclude_languagesstr | list[str] | NotGiven | NoneOptional. Language name in English, or array, to exclude. Requires a positive filter alongside it
keywordsstr | NotGiven | NoneOptional. Words searched across the whole profile: every word must appear, in any field. See Keywords
changed_jobs_within_daysint | NotGiven | NoneOptional. 30, 60, 90 or 120: the current position started within that many days. See Recent job change
locationmodels.SearchPeopleParamsLocation | dict[str, object] | NotGiven | NoneOptional. Location filters such as countryCode, area, region and city.
max_data_age_datestr | NotGiven | NoneOptional. ISO 8601 datetime. Only returns profiles refreshed after this date
cursorstr | NotGiven | NoneOptional. Opaque cursor returned as metadata.nextCursor. Use this cursor to request the next page
per_pageint | NotGiven | NoneOptional. Profiles per page (1 to 100, default 25)
timeoutTimeout | NoneOptional. Seconds per HTTP attempt, or httpx.Timeout. Uses the client setting when None.
max_retriesint | NoneOptional. Retries after the first HTTP attempt. Uses the client setting when None.
headersMapping[str, str] | NoneOptional. Additional HTTP headers for this call.
max_resultsintRequired. Maximum number of paid results to request. Must be a non-negative integer. 0 makes no request.
**extraobjectOptional. Additional API keyword arguments, including camelCase aliases, passed through to the API.

Returns

Iterator[models.PersonFull | None]. An iterator of typed records. Entries can be None. The iterator fetches pages only as you advance. max_results caps paid results, not prompt page fees.

Errors

APIError subclasses follow the HTTP mapping above. APIConnectionError reports transport failures. APITimeoutError reports timed-out attempts. ReverseContactError covers invalid SDK options, invalid max_results or per_page, or a repeated pagination cursor. Malformed typed response data can raise Pydantic ValidationError.

Example

Python SDK

Python SDK

from reversecontact import ReverseContact

with ReverseContact() as client:
    for item in client.search.iter_people(current_function="Marketing", max_results=10):
        if item is not None:
            print(item.to_dict())

people_by_prompt

Call Agentic Search with client.search.people_by_prompt().

Python SDK

Python SDK

def people_by_prompt(
    *,
    prompt: str | NotGiven | None = NOT_GIVEN,
    cursor: str | NotGiven | None = NOT_GIVEN,
    per_page: int | NotGiven | None = NOT_GIVEN,
    timeout: Timeout | None = None,
    max_retries: int | None = None,
    headers: Mapping[str, str] | None = None,
    **extra: object,
) -> Page[models.PersonFull]: ...

Parameters

NameTypeDescription
promptstr | NotGiven | NoneRequired. Plain-language description of the people to find, in any language. At least 3 characters and at most 1000 tokens
cursorstr | NotGiven | NoneOptional. Opaque cursor returned as metadata.nextCursor. Use this cursor to request the next page with the same prompt
per_pageint | NotGiven | NoneOptional. Profiles per page (1 to 100, default 25)
timeoutTimeout | NoneOptional. Seconds per HTTP attempt, or httpx.Timeout. Uses the client setting when None.
max_retriesint | NoneOptional. Retries after the first HTTP attempt. Uses the client setting when None.
headersMapping[str, str] | NoneOptional. Additional HTTP headers for this call.
**extraobjectOptional. Additional API keyword arguments, including camelCase aliases, passed through to the API.

Returns

Page[models.PersonFull]. A page with records in data, a next_cursor, has_next_page() and get_next_page(). The next-page method reuses the filters and returns None after the last page. interpretation contains the filters inferred from the prompt.

Errors

APIError subclasses follow the HTTP mapping above. APIConnectionError reports transport failures. APITimeoutError reports timed-out attempts. ReverseContactError covers invalid SDK options. Malformed typed response data can raise Pydantic ValidationError.

Example

Python SDK

Python SDK

from reversecontact import ReverseContact

with ReverseContact() as client:
    page = client.search.people_by_prompt(prompt="Marketing leaders in France", per_page=10)
    for item in page.data:
        if item is not None:
            print(item.to_dict())

iter_people_by_prompt

Call Agentic Search with client.search.iter_people_by_prompt().

Python SDK

Python SDK

def iter_people_by_prompt(
    *,
    prompt: str | NotGiven | None = NOT_GIVEN,
    cursor: str | NotGiven | None = NOT_GIVEN,
    per_page: int | NotGiven | None = NOT_GIVEN,
    timeout: Timeout | None = None,
    max_retries: int | None = None,
    headers: Mapping[str, str] | None = None,
    max_results: int,
    **extra: object,
) -> Iterator[models.PersonFull | None]: ...

Parameters

NameTypeDescription
promptstr | NotGiven | NoneRequired. Plain-language description of the people to find, in any language. At least 3 characters and at most 1000 tokens
cursorstr | NotGiven | NoneOptional. Opaque cursor returned as metadata.nextCursor. Use this cursor to request the next page with the same prompt
per_pageint | NotGiven | NoneOptional. Profiles per page (1 to 100, default 25)
timeoutTimeout | NoneOptional. Seconds per HTTP attempt, or httpx.Timeout. Uses the client setting when None.
max_retriesint | NoneOptional. Retries after the first HTTP attempt. Uses the client setting when None.
headersMapping[str, str] | NoneOptional. Additional HTTP headers for this call.
max_resultsintRequired. Maximum number of paid results to request. Must be a non-negative integer. 0 makes no request.
**extraobjectOptional. Additional API keyword arguments, including camelCase aliases, passed through to the API.

Returns

Iterator[models.PersonFull | None]. An iterator of typed records. Entries can be None. The iterator fetches pages only as you advance. max_results caps paid results, not prompt page fees.

Errors

APIError subclasses follow the HTTP mapping above. APIConnectionError reports transport failures. APITimeoutError reports timed-out attempts. ReverseContactError covers invalid SDK options, invalid max_results or per_page, or a repeated pagination cursor. Malformed typed response data can raise Pydantic ValidationError.

Example

Python SDK

Python SDK

from reversecontact import ReverseContact

with ReverseContact() as client:
    for item in client.search.iter_people_by_prompt(prompt="Marketing leaders in France", max_results=10):
        if item is not None:
            print(item.to_dict())

people_lookalike

Provide exactly one seed, url or id, to client.search.people_lookalike(). Sending both returns an HTTP 422 response. See People lookalike.

Python SDK

Python SDK

def people_lookalike(
    *,
    url: str | NotGiven | None = NOT_GIVEN,
    id: str | NotGiven | None = NOT_GIVEN,
    cursor: str | NotGiven | None = NOT_GIVEN,
    per_page: int | NotGiven | None = NOT_GIVEN,
    timeout: Timeout | None = None,
    max_retries: int | None = None,
    headers: Mapping[str, str] | None = None,
    **extra: object,
) -> Page[models.PersonFull]: ...

Parameters

NameTypeDescription
urlstr | NotGiven | NoneRequired for the selected strategy. Public Social profile URL of the seed (e.g. https://social.com/in/janedoe). Required unless id is given.
idstr | NotGiven | NoneRequired for the selected strategy. Reverse Contact person id of the seed (e.g. prs_01jbd5vewyenebxgaz869ffe5t), as returned in the id field of any person response. Required unless url is given.
cursorstr | NotGiven | NoneOptional. Opaque cursor returned as metadata.nextCursor. Use this cursor to request the next page
per_pageint | NotGiven | NoneOptional. Profiles per page (1 to 100, default 25)
timeoutTimeout | NoneOptional. Seconds per HTTP attempt, or httpx.Timeout. Uses the client setting when None.
max_retriesint | NoneOptional. Retries after the first HTTP attempt. Uses the client setting when None.
headersMapping[str, str] | NoneOptional. Additional HTTP headers for this call.
**extraobjectOptional. Additional API keyword arguments, including camelCase aliases, passed through to the API.

Returns

Page[models.PersonFull]. A page with records in data, a next_cursor, has_next_page() and get_next_page(). The next-page method reuses the filters and returns None after the last page.

Errors

APIError subclasses follow the HTTP mapping above. APIConnectionError reports transport failures. APITimeoutError reports timed-out attempts. ReverseContactError covers invalid SDK options. Malformed typed response data can raise Pydantic ValidationError.

Example

Python SDK

Python SDK

from reversecontact import ReverseContact

with ReverseContact() as client:
    page = client.search.people_lookalike(url="https://social.com/in/janedoe", per_page=10)
    for item in page.data:
        if item is not None:
            print(item.to_dict())

iter_people_lookalike

Provide exactly one seed, url or id, to client.search.iter_people_lookalike(). Sending both returns an HTTP 422 response. See People lookalike.

Python SDK

Python SDK

def iter_people_lookalike(
    *,
    url: str | NotGiven | None = NOT_GIVEN,
    id: str | NotGiven | None = NOT_GIVEN,
    cursor: str | NotGiven | None = NOT_GIVEN,
    per_page: int | NotGiven | None = NOT_GIVEN,
    timeout: Timeout | None = None,
    max_retries: int | None = None,
    headers: Mapping[str, str] | None = None,
    max_results: int,
    **extra: object,
) -> Iterator[models.PersonFull | None]: ...

Parameters

NameTypeDescription
urlstr | NotGiven | NoneRequired for the selected strategy. Public Social profile URL of the seed (e.g. https://social.com/in/janedoe). Required unless id is given.
idstr | NotGiven | NoneRequired for the selected strategy. Reverse Contact person id of the seed (e.g. prs_01jbd5vewyenebxgaz869ffe5t), as returned in the id field of any person response. Required unless url is given.
cursorstr | NotGiven | NoneOptional. Opaque cursor returned as metadata.nextCursor. Use this cursor to request the next page
per_pageint | NotGiven | NoneOptional. Profiles per page (1 to 100, default 25)
timeoutTimeout | NoneOptional. Seconds per HTTP attempt, or httpx.Timeout. Uses the client setting when None.
max_retriesint | NoneOptional. Retries after the first HTTP attempt. Uses the client setting when None.
headersMapping[str, str] | NoneOptional. Additional HTTP headers for this call.
max_resultsintRequired. Maximum number of paid results to request. Must be a non-negative integer. 0 makes no request.
**extraobjectOptional. Additional API keyword arguments, including camelCase aliases, passed through to the API.

Returns

Iterator[models.PersonFull | None]. An iterator of typed records. Entries can be None. The iterator fetches pages only as you advance. max_results caps paid results, not prompt page fees.

Errors

APIError subclasses follow the HTTP mapping above. APIConnectionError reports transport failures. APITimeoutError reports timed-out attempts. ReverseContactError covers invalid SDK options, invalid max_results or per_page, or a repeated pagination cursor. Malformed typed response data can raise Pydantic ValidationError.

Example

Python SDK

Python SDK

from reversecontact import ReverseContact

with ReverseContact() as client:
    for item in client.search.iter_people_lookalike(url="https://social.com/in/janedoe", max_results=10):
        if item is not None:
            print(item.to_dict())

count_people

Call People search count with client.search.count_people().

Python SDK

Python SDK

def count_people(
    *,
    first_name: str | NotGiven | None = NOT_GIVEN,
    last_name: str | NotGiven | None = NOT_GIVEN,
    headline: str | NotGiven | None = NOT_GIVEN,
    is_open_to_work: bool | NotGiven | None = NOT_GIVEN,
    is_currently_employed: bool | NotGiven | None = NOT_GIVEN,
    is_premium: bool | NotGiven | None = NOT_GIVEN,
    is_verified: bool | NotGiven | None = NOT_GIVEN,
    followers_count: models.CountPeopleParamsFollowersCount | dict[str, object] | NotGiven | None = NOT_GIVEN,
    connections_count: models.CountPeopleParamsConnectionsCount | dict[str, object] | NotGiven | None = NOT_GIVEN,
    position_title: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_position_title: str | list[str] | NotGiven | None = NOT_GIVEN,
    company_name: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_company_name: str | list[str] | NotGiven | None = NOT_GIVEN,
    company_industry: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_company_industry: str | list[str] | NotGiven | None = NOT_GIVEN,
    company_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_company_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    company_linkedin_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_company_linkedin_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    company_public_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_company_public_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_position_title: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_position_title: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_company_name: str | NotGiven | None = NOT_GIVEN,
    exclude_current_company_name: str | NotGiven | None = NOT_GIVEN,
    current_company_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_company_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_company_linkedin_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_company_linkedin_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_company_public_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_company_public_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_company_industry: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_company_employee_count_range: models.CountPeopleParamsCurrentCompanyEmployeeCountRange | dict[str, object] | NotGiven | None = NOT_GIVEN,
    current_function: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_function: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_sub_function: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_sub_function: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_seniority: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_seniority: str | list[str] | NotGiven | None = NOT_GIVEN,
    current_contract_type: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_current_contract_type: str | list[str] | NotGiven | None = NOT_GIVEN,
    contract_type: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_contract_type: str | list[str] | NotGiven | None = NOT_GIVEN,
    school_name: str | list[str] | NotGiven | None = NOT_GIVEN,
    school_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    school_linkedin_id: str | list[str] | NotGiven | None = NOT_GIVEN,
    total_experience_months: models.CountPeopleParamsTotalExperienceMonths | dict[str, object] | NotGiven | None = NOT_GIVEN,
    experience: list[models.CountPeopleParamsExperienceItem | dict[str, object]] | NotGiven | None = NOT_GIVEN,
    skills: str | list[str] | NotGiven | None = NOT_GIVEN,
    languages: str | list[str] | NotGiven | None = NOT_GIVEN,
    exclude_languages: str | list[str] | NotGiven | None = NOT_GIVEN,
    keywords: str | NotGiven | None = NOT_GIVEN,
    changed_jobs_within_days: int | NotGiven | None = NOT_GIVEN,
    location: models.CountPeopleParamsLocation | dict[str, object] | NotGiven | None = NOT_GIVEN,
    max_data_age_date: str | NotGiven | None = NOT_GIVEN,
    timeout: Timeout | None = None,
    max_retries: int | None = None,
    headers: Mapping[str, str] | None = None,
    **extra: object,
) -> Result[models.SearchPeopleCountData]: ...

Parameters

NameTypeDescription
first_namestr | NotGiven | NoneOptional. Filter by first name
last_namestr | NotGiven | NoneOptional. Filter by last name
headlinestr | NotGiven | NoneOptional. Match keywords found in the profile headline
is_open_to_workbool | NotGiven | NoneOptional. Restrict to profiles flagged open-to-work
is_currently_employedbool | NotGiven | NoneOptional. Restrict to profiles that have a current employer
is_premiumbool | NotGiven | NoneOptional. Restrict to Social Premium members
is_verifiedbool | NotGiven | NoneOptional. Restrict to profiles with a verification badge
followers_countmodels.CountPeopleParamsFollowersCount | dict[str, object] | NotGiven | NoneOptional. Follower count range, with inclusive min and max bounds.
connections_countmodels.CountPeopleParamsConnectionsCount | dict[str, object] | NotGiven | NoneOptional. Connection count range, bounds inclusive. One bound is enough: { "min": 501 } keeps profiles with more than 500 connections
position_titlestr | list[str] | NotGiven | NoneOptional. Current or past position title, or array of titles (OR-matched)
exclude_position_titlestr | list[str] | NotGiven | NoneOptional. Current or past position title, or array of titles, to exclude
company_namestr | list[str] | NotGiven | NoneOptional. Current or past company name, or array of names (OR-matched)
exclude_company_namestr | list[str] | NotGiven | NoneOptional. Current or past company name, or array of names, to exclude
company_industrystr | list[str] | NotGiven | NoneOptional. Current or past company industry, from the same industry list
exclude_company_industrystr | list[str] | NotGiven | NoneOptional. Current or past company industry, or array, to exclude
company_idstr | list[str] | NotGiven | NoneOptional. Current or past company com_... id, or array of ids
exclude_company_idstr | list[str] | NotGiven | NoneOptional. Current or past company com_... id, or array of ids, to exclude
company_linkedin_idstr | list[str] | NotGiven | NoneOptional. Current or past company Social identifier, or array of identifiers
exclude_company_linkedin_idstr | list[str] | NotGiven | NoneOptional. Current or past company Social identifier, or array, to exclude
company_public_idstr | list[str] | NotGiven | NoneOptional. Current or past company public ID or slug, or array
exclude_company_public_idstr | list[str] | NotGiven | NoneOptional. Current or past company public ID or slug, or array, to exclude
current_position_titlestr | list[str] | NotGiven | NoneOptional. Current position title, or array of titles: a person matches if their current title matches any of them
exclude_current_position_titlestr | list[str] | NotGiven | NoneOptional. Current position title, or array of titles, to exclude from results
current_company_namestr | NotGiven | NoneOptional. Match the current employer name
exclude_current_company_namestr | NotGiven | NoneOptional. Exclude the current employer name
current_company_idstr | list[str] | NotGiven | NoneOptional. Reverse Contact internal id (com_...) of the current employer
exclude_current_company_idstr | list[str] | NotGiven | NoneOptional. Current employer com_... id, or array of ids, to exclude
current_company_linkedin_idstr | list[str] | NotGiven | NoneOptional. Current employer Social identifier, or array of identifiers
exclude_current_company_linkedin_idstr | list[str] | NotGiven | NoneOptional. Current employer Social identifier, or array, to exclude
current_company_public_idstr | list[str] | NotGiven | NoneOptional. Current employer public ID or slug, or array
exclude_current_company_public_idstr | list[str] | NotGiven | NoneOptional. Current employer public ID or slug, or array, to exclude
current_company_industrystr | list[str] | NotGiven | NoneOptional. Current employer industry. See Industry values for the full list
current_company_employee_count_rangemodels.CountPeopleParamsCurrentCompanyEmployeeCountRange | dict[str, object] | NotGiven | NoneOptional. Current employer size range, with inclusive min and max bounds.
current_functionstr | list[str] | NotGiven | NoneOptional. Current function from the position taxonomy
exclude_current_functionstr | list[str] | NotGiven | NoneOptional. Current function, or array of functions, to exclude
current_sub_functionstr | list[str] | NotGiven | NoneOptional. Current sub-function from the position taxonomy
exclude_current_sub_functionstr | list[str] | NotGiven | NoneOptional. Current sub-function, or array of sub-functions, to exclude
current_senioritystr | list[str] | NotGiven | NoneOptional. Current seniority from the position taxonomy
exclude_current_senioritystr | list[str] | NotGiven | NoneOptional. Current seniority, or array of seniorities, to exclude
current_contract_typestr | list[str] | NotGiven | NoneOptional. Contract type of the current position, or array (OR-matched). See Contract types
exclude_current_contract_typestr | list[str] | NotGiven | NoneOptional. Contract type of the current position, or array, to exclude. Requires a positive filter alongside it
contract_typestr | list[str] | NotGiven | NoneOptional. Contract type of any position, current or past, or array (OR-matched)
exclude_contract_typestr | list[str] | NotGiven | NoneOptional. Contract type of any position, current or past, or array, to exclude. Requires a positive filter alongside it
school_namestr | list[str] | NotGiven | NoneOptional. School name, or array of names: a person matches if they attended any of them. See Schools
school_idstr | list[str] | NotGiven | NoneOptional. Reverse Contact school id (sch_...), or array. See Schools
school_linkedin_idstr | list[str] | NotGiven | NoneOptional. School Social identifier, or array. See Schools
total_experience_monthsmodels.CountPeopleParamsTotalExperienceMonths | dict[str, object] | NotGiven | NoneOptional. Total work experience in months, with inclusive min and max bounds.
experiencelist[models.CountPeopleParamsExperienceItem | dict[str, object]] | NotGiven | NoneOptional. Past-experience requirements. All entries are AND-combined
skillsstr | list[str] | NotGiven | NoneOptional. Skill name, or array of skill names: a person matches if they list any of them. See Skills
languagesstr | list[str] | NotGiven | NoneOptional. Language name in English, or array: a person matches if they speak any of them. See Languages
exclude_languagesstr | list[str] | NotGiven | NoneOptional. Language name in English, or array, to exclude. Requires a positive filter alongside it
keywordsstr | NotGiven | NoneOptional. Words searched across the whole profile: every word must appear, in any field. See Keywords
changed_jobs_within_daysint | NotGiven | NoneOptional. 30, 60, 90 or 120: the current position started within that many days. See Recent job change
locationmodels.CountPeopleParamsLocation | dict[str, object] | NotGiven | NoneOptional. Location filters such as countryCode, area, region and city.
max_data_age_datestr | NotGiven | NoneOptional. ISO 8601 datetime. Only returns profiles refreshed after this date
timeoutTimeout | NoneOptional. Seconds per HTTP attempt, or httpx.Timeout. Uses the client setting when None.
max_retriesint | NoneOptional. Retries after the first HTTP attempt. Uses the client setting when None.
headersMapping[str, str] | NoneOptional. Additional HTTP headers for this call.
**extraobjectOptional. Additional API keyword arguments, including camelCase aliases, passed through to the API.

Returns

Result[models.SearchPeopleCountData]. data.count is the number of matching people. The call does not extract profiles.

Errors

APIError subclasses follow the HTTP mapping above. APIConnectionError reports transport failures. APITimeoutError reports timed-out attempts. ReverseContactError covers invalid SDK options. Malformed typed response data can raise Pydantic ValidationError.

Example

Python SDK

Python SDK

from reversecontact import ReverseContact

with ReverseContact() as client:
    result = client.search.count_people(current_function="Marketing")
    print(result.data if result is not None else None)

people_auto_suggestion

Call People auto-suggestion with client.search.people_auto_suggestion().

Python SDK

Python SDK

def people_auto_suggestion(
    *,
    field: str | NotGiven | None = NOT_GIVEN,
    query: str | NotGiven | None = NOT_GIVEN,
    limit: int | NotGiven | None = NOT_GIVEN,
    timeout: Timeout | None = None,
    max_retries: int | None = None,
    headers: Mapping[str, str] | None = None,
    **extra: object,
) -> Result[models.SearchPeopleAutoSuggestionData]: ...

Parameters

NameTypeDescription
fieldstr | NotGiven | NoneRequired. The filter to complete. skills is the only value today
querystr | NotGiven | NoneRequired. What has been typed so far, 1 to 100 characters. Case and accents are ignored
limitint | NotGiven | NoneOptional. Maximum values returned, from 1 to 25. Defaults to 10
timeoutTimeout | NoneOptional. Seconds per HTTP attempt, or httpx.Timeout. Uses the client setting when None.
max_retriesint | NoneOptional. Retries after the first HTTP attempt. Uses the client setting when None.
headersMapping[str, str] | NoneOptional. Additional HTTP headers for this call.
**extraobjectOptional. Additional API keyword arguments, including camelCase aliases, passed through to the API.

Returns

Result[models.SearchPeopleAutoSuggestionData]. data contains the selected field and its suggestions.

Errors

APIError subclasses follow the HTTP mapping above. APIConnectionError reports transport failures. APITimeoutError reports timed-out attempts. ReverseContactError covers invalid SDK options. Malformed typed response data can raise Pydantic ValidationError.

Example

Python SDK

Python SDK

from reversecontact import ReverseContact

with ReverseContact() as client:
    result = client.search.people_auto_suggestion(field="currentPositionTitle", query="market", limit=5)
    print(result.data if result is not None else None)

organizations

Provide at least one company filter. Use max_data_age_date with another filter. When followers_count is the only filter, supply both min and max.

Call Company search with client.search.organizations().

Python SDK

Python SDK

def organizations(
    *,
    company_name: str | NotGiven | None = NOT_GIVEN,
    company_domain: str | NotGiven | None = NOT_GIVEN,
    industry: str | list[str] | NotGiven | None = NOT_GIVEN,
    specialities: str | list[str] | NotGiven | None = NOT_GIVEN,
    employee_count_range: models.SearchOrganizationsParamsEmployeeCountRange | dict[str, object] | NotGiven | None = NOT_GIVEN,
    founded_year: models.SearchOrganizationsParamsFoundedYear | dict[str, object] | NotGiven | None = NOT_GIVEN,
    followers_count: models.SearchOrganizationsParamsFollowersCount | dict[str, object] | NotGiven | None = NOT_GIVEN,
    location: models.SearchOrganizationsParamsLocation | dict[str, object] | NotGiven | None = NOT_GIVEN,
    max_data_age_date: str | NotGiven | None = NOT_GIVEN,
    cursor: str | NotGiven | None = NOT_GIVEN,
    per_page: int | NotGiven | None = NOT_GIVEN,
    timeout: Timeout | None = None,
    max_retries: int | None = None,
    headers: Mapping[str, str] | None = None,
    **extra: object,
) -> Page[models.CompanyFull]: ...

Parameters

NameTypeDescription
company_namestr | NotGiven | NoneOptional. Filter by company name
company_domainstr | NotGiven | NoneOptional. Filter by website domain (e.g. acme.com). Disposable domains are rejected with 422
industrystr | list[str] | NotGiven | NoneOptional. Industry, or array of industries: a company matches if its industry is any of them. See Industry values for the full list
specialitiesstr | list[str] | NotGiven | NoneOptional. Speciality, or array of specialities: a company matches if it lists any of them. See Specialities
employee_count_rangemodels.SearchOrganizationsParamsEmployeeCountRange | dict[str, object] | NotGiven | NoneOptional. Company size range, with inclusive min and max bounds.
founded_yearmodels.SearchOrganizationsParamsFoundedYear | dict[str, object] | NotGiven | NoneOptional. Founding year range, with inclusive min and max bounds.
followers_countmodels.SearchOrganizationsParamsFollowersCount | dict[str, object] | NotGiven | NoneOptional. Follower count range, with inclusive min and max bounds.
locationmodels.SearchOrganizationsParamsLocation | dict[str, object] | NotGiven | NoneOptional. Headquarters location. Each property accepts one value or an OR-matched list
max_data_age_datestr | NotGiven | NoneOptional. ISO 8601 datetime. Only returns companies refreshed after this date. Needs at least one other filter
cursorstr | NotGiven | NoneOptional. Opaque cursor returned as metadata.nextCursor. Use this cursor to request the next page
per_pageint | NotGiven | NoneOptional. Companies per page (1 to 100, default 25)
timeoutTimeout | NoneOptional. Seconds per HTTP attempt, or httpx.Timeout. Uses the client setting when None.
max_retriesint | NoneOptional. Retries after the first HTTP attempt. Uses the client setting when None.
headersMapping[str, str] | NoneOptional. Additional HTTP headers for this call.
**extraobjectOptional. Additional API keyword arguments, including camelCase aliases, passed through to the API.

Returns

Page[models.CompanyFull]. A page with records in data, a next_cursor, has_next_page() and get_next_page(). The next-page method reuses the filters and returns None after the last page.

Errors

APIError subclasses follow the HTTP mapping above. APIConnectionError reports transport failures. APITimeoutError reports timed-out attempts. ReverseContactError covers invalid SDK options. Malformed typed response data can raise Pydantic ValidationError.

Example

Python SDK

Python SDK

from reversecontact import ReverseContact

with ReverseContact() as client:
    page = client.search.organizations(industry="Software Development", per_page=10)
    for item in page.data:
        if item is not None:
            print(item.to_dict())

iter_organizations

Provide at least one company filter. Use max_data_age_date with another filter. When followers_count is the only filter, supply both min and max.

Call Company search with client.search.iter_organizations().

Python SDK

Python SDK

def iter_organizations(
    *,
    company_name: str | NotGiven | None = NOT_GIVEN,
    company_domain: str | NotGiven | None = NOT_GIVEN,
    industry: str | list[str] | NotGiven | None = NOT_GIVEN,
    specialities: str | list[str] | NotGiven | None = NOT_GIVEN,
    employee_count_range: models.SearchOrganizationsParamsEmployeeCountRange | dict[str, object] | NotGiven | None = NOT_GIVEN,
    founded_year: models.SearchOrganizationsParamsFoundedYear | dict[str, object] | NotGiven | None = NOT_GIVEN,
    followers_count: models.SearchOrganizationsParamsFollowersCount | dict[str, object] | NotGiven | None = NOT_GIVEN,
    location: models.SearchOrganizationsParamsLocation | dict[str, object] | NotGiven | None = NOT_GIVEN,
    max_data_age_date: str | NotGiven | None = NOT_GIVEN,
    cursor: str | NotGiven | None = NOT_GIVEN,
    per_page: int | NotGiven | None = NOT_GIVEN,
    timeout: Timeout | None = None,
    max_retries: int | None = None,
    headers: Mapping[str, str] | None = None,
    max_results: int,
    **extra: object,
) -> Iterator[models.CompanyFull | None]: ...

Parameters

NameTypeDescription
company_namestr | NotGiven | NoneOptional. Filter by company name
company_domainstr | NotGiven | NoneOptional. Filter by website domain (e.g. acme.com). Disposable domains are rejected with 422
industrystr | list[str] | NotGiven | NoneOptional. Industry, or array of industries: a company matches if its industry is any of them. See Industry values for the full list
specialitiesstr | list[str] | NotGiven | NoneOptional. Speciality, or array of specialities: a company matches if it lists any of them. See Specialities
employee_count_rangemodels.SearchOrganizationsParamsEmployeeCountRange | dict[str, object] | NotGiven | NoneOptional. Company size range, with inclusive min and max bounds.
founded_yearmodels.SearchOrganizationsParamsFoundedYear | dict[str, object] | NotGiven | NoneOptional. Founding year range, with inclusive min and max bounds.
followers_countmodels.SearchOrganizationsParamsFollowersCount | dict[str, object] | NotGiven | NoneOptional. Follower count range, with inclusive min and max bounds.
locationmodels.SearchOrganizationsParamsLocation | dict[str, object] | NotGiven | NoneOptional. Headquarters location. Each property accepts one value or an OR-matched list
max_data_age_datestr | NotGiven | NoneOptional. ISO 8601 datetime. Only returns companies refreshed after this date. Needs at least one other filter
cursorstr | NotGiven | NoneOptional. Opaque cursor returned as metadata.nextCursor. Use this cursor to request the next page
per_pageint | NotGiven | NoneOptional. Companies per page (1 to 100, default 25)
timeoutTimeout | NoneOptional. Seconds per HTTP attempt, or httpx.Timeout. Uses the client setting when None.
max_retriesint | NoneOptional. Retries after the first HTTP attempt. Uses the client setting when None.
headersMapping[str, str] | NoneOptional. Additional HTTP headers for this call.
max_resultsintRequired. Maximum number of paid results to request. Must be a non-negative integer. 0 makes no request.
**extraobjectOptional. Additional API keyword arguments, including camelCase aliases, passed through to the API.

Returns

Iterator[models.CompanyFull | None]. An iterator of typed records. Entries can be None. The iterator fetches pages only as you advance. max_results caps paid results, not prompt page fees.

Errors

APIError subclasses follow the HTTP mapping above. APIConnectionError reports transport failures. APITimeoutError reports timed-out attempts. ReverseContactError covers invalid SDK options, invalid max_results or per_page, or a repeated pagination cursor. Malformed typed response data can raise Pydantic ValidationError.

Example

Python SDK

Python SDK

from reversecontact import ReverseContact

with ReverseContact() as client:
    for item in client.search.iter_organizations(industry="Software Development", max_results=10):
        if item is not None:
            print(item.to_dict())

organizations_by_prompt

Call Agentic Company Search with client.search.organizations_by_prompt().

Python SDK

Python SDK

def organizations_by_prompt(
    *,
    prompt: str | NotGiven | None = NOT_GIVEN,
    cursor: str | NotGiven | None = NOT_GIVEN,
    per_page: int | NotGiven | None = NOT_GIVEN,
    timeout: Timeout | None = None,
    max_retries: int | None = None,
    headers: Mapping[str, str] | None = None,
    **extra: object,
) -> Page[models.CompanyFull]: ...

Parameters

NameTypeDescription
promptstr | NotGiven | NoneRequired. Plain-language description of the companies to find, in any language. At least 3 characters and at most 1000 tokens
cursorstr | NotGiven | NoneOptional. Opaque cursor returned as metadata.nextCursor. Use this cursor to request the next page with the same prompt
per_pageint | NotGiven | NoneOptional. Companies per page (1 to 100, default 25)
timeoutTimeout | NoneOptional. Seconds per HTTP attempt, or httpx.Timeout. Uses the client setting when None.
max_retriesint | NoneOptional. Retries after the first HTTP attempt. Uses the client setting when None.
headersMapping[str, str] | NoneOptional. Additional HTTP headers for this call.
**extraobjectOptional. Additional API keyword arguments, including camelCase aliases, passed through to the API.

Returns

Page[models.CompanyFull]. A page with records in data, a next_cursor, has_next_page() and get_next_page(). The next-page method reuses the filters and returns None after the last page. interpretation contains the filters inferred from the prompt.

Errors

APIError subclasses follow the HTTP mapping above. APIConnectionError reports transport failures. APITimeoutError reports timed-out attempts. ReverseContactError covers invalid SDK options. Malformed typed response data can raise Pydantic ValidationError.

Example

Python SDK

Python SDK

from reversecontact import ReverseContact

with ReverseContact() as client:
    page = client.search.organizations_by_prompt(prompt="Software companies in France", per_page=10)
    for item in page.data:
        if item is not None:
            print(item.to_dict())

iter_organizations_by_prompt

Call Agentic Company Search with client.search.iter_organizations_by_prompt().

Python SDK

Python SDK

def iter_organizations_by_prompt(
    *,
    prompt: str | NotGiven | None = NOT_GIVEN,
    cursor: str | NotGiven | None = NOT_GIVEN,
    per_page: int | NotGiven | None = NOT_GIVEN,
    timeout: Timeout | None = None,
    max_retries: int | None = None,
    headers: Mapping[str, str] | None = None,
    max_results: int,
    **extra: object,
) -> Iterator[models.CompanyFull | None]: ...

Parameters

NameTypeDescription
promptstr | NotGiven | NoneRequired. Plain-language description of the companies to find, in any language. At least 3 characters and at most 1000 tokens
cursorstr | NotGiven | NoneOptional. Opaque cursor returned as metadata.nextCursor. Use this cursor to request the next page with the same prompt
per_pageint | NotGiven | NoneOptional. Companies per page (1 to 100, default 25)
timeoutTimeout | NoneOptional. Seconds per HTTP attempt, or httpx.Timeout. Uses the client setting when None.
max_retriesint | NoneOptional. Retries after the first HTTP attempt. Uses the client setting when None.
headersMapping[str, str] | NoneOptional. Additional HTTP headers for this call.
max_resultsintRequired. Maximum number of paid results to request. Must be a non-negative integer. 0 makes no request.
**extraobjectOptional. Additional API keyword arguments, including camelCase aliases, passed through to the API.

Returns

Iterator[models.CompanyFull | None]. An iterator of typed records. Entries can be None. The iterator fetches pages only as you advance. max_results caps paid results, not prompt page fees.

Errors

APIError subclasses follow the HTTP mapping above. APIConnectionError reports transport failures. APITimeoutError reports timed-out attempts. ReverseContactError covers invalid SDK options, invalid max_results or per_page, or a repeated pagination cursor. Malformed typed response data can raise Pydantic ValidationError.

Example

Python SDK

Python SDK

from reversecontact import ReverseContact

with ReverseContact() as client:
    for item in client.search.iter_organizations_by_prompt(prompt="Software companies in France", max_results=10):
        if item is not None:
            print(item.to_dict())

count_organizations

Provide at least one company filter. Use max_data_age_date with another filter. When followers_count is the only filter, supply both min and max.

Call Company search count with client.search.count_organizations().

Python SDK

Python SDK

def count_organizations(
    *,
    company_name: str | NotGiven | None = NOT_GIVEN,
    company_domain: str | NotGiven | None = NOT_GIVEN,
    industry: str | list[str] | NotGiven | None = NOT_GIVEN,
    specialities: str | list[str] | NotGiven | None = NOT_GIVEN,
    employee_count_range: models.CountOrganizationsParamsEmployeeCountRange | dict[str, object] | NotGiven | None = NOT_GIVEN,
    founded_year: models.CountOrganizationsParamsFoundedYear | dict[str, object] | NotGiven | None = NOT_GIVEN,
    followers_count: models.CountOrganizationsParamsFollowersCount | dict[str, object] | NotGiven | None = NOT_GIVEN,
    location: models.CountOrganizationsParamsLocation | dict[str, object] | NotGiven | None = NOT_GIVEN,
    max_data_age_date: str | NotGiven | None = NOT_GIVEN,
    timeout: Timeout | None = None,
    max_retries: int | None = None,
    headers: Mapping[str, str] | None = None,
    **extra: object,
) -> Result[models.SearchOrganizationsCountData]: ...

Parameters

NameTypeDescription
company_namestr | NotGiven | NoneOptional. Filter by company name
company_domainstr | NotGiven | NoneOptional. Filter by website domain (e.g. acme.com). Disposable domains are rejected with 422
industrystr | list[str] | NotGiven | NoneOptional. Industry, or array of industries: a company matches if its industry is any of them. See Industry values for the full list
specialitiesstr | list[str] | NotGiven | NoneOptional. Speciality, or array of specialities: a company matches if it lists any of them. See Specialities
employee_count_rangemodels.CountOrganizationsParamsEmployeeCountRange | dict[str, object] | NotGiven | NoneOptional. Company size range, with inclusive min and max bounds.
founded_yearmodels.CountOrganizationsParamsFoundedYear | dict[str, object] | NotGiven | NoneOptional. Founding year range, with inclusive min and max bounds.
followers_countmodels.CountOrganizationsParamsFollowersCount | dict[str, object] | NotGiven | NoneOptional. Follower count range, with inclusive min and max bounds.
locationmodels.CountOrganizationsParamsLocation | dict[str, object] | NotGiven | NoneOptional. Headquarters location. Each property accepts one value or an OR-matched list
max_data_age_datestr | NotGiven | NoneOptional. ISO 8601 datetime. Only returns companies refreshed after this date. Needs at least one other filter
timeoutTimeout | NoneOptional. Seconds per HTTP attempt, or httpx.Timeout. Uses the client setting when None.
max_retriesint | NoneOptional. Retries after the first HTTP attempt. Uses the client setting when None.
headersMapping[str, str] | NoneOptional. Additional HTTP headers for this call.
**extraobjectOptional. Additional API keyword arguments, including camelCase aliases, passed through to the API.

Returns

Result[models.SearchOrganizationsCountData]. data.count is the number of matching companies. The call does not extract companies.

Errors

APIError subclasses follow the HTTP mapping above. APIConnectionError reports transport failures. APITimeoutError reports timed-out attempts. ReverseContactError covers invalid SDK options. Malformed typed response data can raise Pydantic ValidationError.

Example

Python SDK

Python SDK

from reversecontact import ReverseContact

with ReverseContact() as client:
    result = client.search.count_organizations(industry="Software Development")
    print(result.data if result is not None else None)

people_fields

Call People search available fields with client.search.people_fields().

Python SDK

Python SDK

def people_fields(
    *,
    timeout: Timeout | None = None,
    max_retries: int | None = None,
    headers: Mapping[str, str] | None = None,
    **extra: object,
) -> Result[models.SearchFieldsData]: ...

Parameters

NameTypeDescription
timeoutTimeout | NoneOptional. Seconds per HTTP attempt, or httpx.Timeout. Uses the client setting when None.
max_retriesint | NoneOptional. Retries after the first HTTP attempt. Uses the client setting when None.
headersMapping[str, str] | NoneOptional. Additional HTTP headers for this call.
**extraobjectOptional. Additional API keyword arguments, including camelCase aliases, passed through to the API.

Returns

Result[models.SearchFieldsData]. data.fields describes supported people filters and allowed values.

Errors

APIError subclasses follow the HTTP mapping above. APIConnectionError reports transport failures. APITimeoutError reports timed-out attempts. ReverseContactError covers invalid SDK options. Malformed typed response data can raise Pydantic ValidationError.

Example

Python SDK

Python SDK

from reversecontact import ReverseContact

with ReverseContact() as client:
    result = client.search.people_fields()
    print(result.data if result is not None else None)

organizations_fields

Call Company search available fields with client.search.organizations_fields().

Python SDK

Python SDK

def organizations_fields(
    *,
    timeout: Timeout | None = None,
    max_retries: int | None = None,
    headers: Mapping[str, str] | None = None,
    **extra: object,
) -> Result[models.SearchFieldsData]: ...

Parameters

NameTypeDescription
timeoutTimeout | NoneOptional. Seconds per HTTP attempt, or httpx.Timeout. Uses the client setting when None.
max_retriesint | NoneOptional. Retries after the first HTTP attempt. Uses the client setting when None.
headersMapping[str, str] | NoneOptional. Additional HTTP headers for this call.
**extraobjectOptional. Additional API keyword arguments, including camelCase aliases, passed through to the API.

Returns

Result[models.SearchFieldsData]. data.fields describes supported company filters and allowed values.

Errors

APIError subclasses follow the HTTP mapping above. APIConnectionError reports transport failures. APITimeoutError reports timed-out attempts. ReverseContactError covers invalid SDK options. Malformed typed response data can raise Pydantic ValidationError.

Example

Python SDK

Python SDK

from reversecontact import ReverseContact

with ReverseContact() as client:
    result = client.search.organizations_fields()
    print(result.data if result is not None else None)

See the Python SDK overview, Search budget and Filter constants.

FAQ

Which Python search methods require max_results?

iter_people, iter_people_by_prompt, iter_people_lookalike, iter_organizations and iter_organizations_by_prompt require a non-negative max_results.

How do I count people without paying for results?

Call client.search.count_people() with the search filters. The count is in result.data.count, and the call is free.

What does a Python search page return?

A search Page exposes data, next_cursor, count, quotas, has_next_page() and get_next_page(). Prompt pages also expose interpretation.

How do I list Python SDK search filters?

Call the free client.search.people_fields() or client.search.organizations_fields() methods and inspect result.data.fields.