# Account Source: https://docs.dataforb2b.ai/api-reference/account GET /account Get your account information and remaining credits ## Response **valid** `boolean` Whether the API key is valid **credits** `number` Remaining credit balance on the account *** ```bash cURL theme={null} curl -H "api_key: YOUR_API_KEY" https://api.dataforb2b.ai/account ``` ```python Python theme={null} import requests response = requests.get( "https://api.dataforb2b.ai/account", headers={"api_key": "YOUR_API_KEY"} ) data = response.json() print(f"Valid: {data['valid']}") print(f"Credits: {data['credits']}") ``` ```javascript JavaScript theme={null} const response = await fetch('https://api.dataforb2b.ai/account', { headers: { 'api_key': 'YOUR_API_KEY' } }); const data = await response.json(); console.log('Valid:', data.valid); console.log('Credits:', data.credits); ``` ```json Response theme={null} { "valid": true, "credits": 47200.75 } ``` # Enrich Company Source: https://docs.dataforb2b.ai/api-reference/enrich-company POST /enrich/company Enrich a company with all its data (general info, metrics, growth, funding, etc.) ## Cost 1 record per company. > [!NOTE] > > Accounts created before October 24, 2026 keep their previous rate. *** ## Request Body **company\_identifier** `string` *required* Company identifier. Supports multiple formats: * **Universal name (slug):** `google`, `microsoft`, `apple` * **Full URL:** `https://www.linkedin.com/company/google/` * **Short URL:** `linkedin.com/company/google` * **Encoded ID:** `org_0lox54iG5IEZSb71mZWLR8z9CVPs8v1Lj8oQ` — the `id` returned by [Search Company](/api-reference/search-company) and [Typeahead](/api-reference/typeahead) * **Twitter/X URL or handle:** `https://x.com/google`, `x.com/google`, `@google` > [!NOTE] > > With a Twitter/X identifier, the company is resolved from its X profile and matched to enrich firmographic data. Pass a LinkedIn identifier when you have one for the most complete results. *** ## Response **company** `object` Complete company data with all available information **company properties** **id** `string` Encoded company ID (org\_xxx) **name** `string` Company name **tagline** `string | null` Company tagline/slogan **description** `string | null` Full company description **industry** `string | null` Industry **headquarters** `object | null` Headquarters location **headquarters properties** **country** `string` Country code (e.g., "US") **city** `string` City name **region** `string` Region/state name **founded\_year** `number | null` Year the company was founded **company\_type** `string | null` Type of company (e.g., "Public Company", "Private", "Nonprofit") **logo\_url** `string | null` Company logo URL **links** `object` Company links and social media **links properties** **website** `string | null` Company website URL **linkedin** `string` Company profile URL **twitter** `string | null` Twitter profile URL **instagram** `string | null` Instagram profile URL **facebook** `string | null` Facebook page URL **size** `object` Company size information **size properties** **employees** `number` Number of employees **range\_min** `number` Minimum range of employee count **range\_max** `number | null` Maximum range of employee count (null if unlimited) **metrics** `object` Company metrics **metrics properties** **followers** `number` Number of followers **signals** `object` Company signals **signals properties** **verified** `boolean` Whether the company is verified on LinkedIn **actively\_hiring** `boolean` Whether the company is actively hiring **categories** `array` Array of company categories/tags (strings) **locations** `array | null` All company office locations **location item properties** **country** `string` Country code **city** `string` City name **region** `string` Region/state name **is\_headquarters** `boolean` Whether this is the headquarters location **funding** `object | null` Funding information **funding properties** **stage** `string` Funding stage (e.g., `seed_round`, `series_a`, `series_b`, `post_ipo_equity`) **total\_rounds** `number` Total number of funding rounds **last\_round\_amount** `number | null` Amount of the last funding round, in `last_round_currency` **last\_round\_currency** `string | null` Currency of the last round (e.g., "USD") **last\_round\_date** `string | null` Date of last funding round (YYYY-MM-DD format) **rounds** `array` Funding rounds history. Each item has `round` (e.g., `series_a`, `seed_round`), `amount_usd` (number or `null`) and `date` (YYYY-MM-DD). **investors** `array | null` Investors, when known **other\_investors\_count** `number | null` Number of additional investors not listed **growth** `object | null` Company growth statistics **growth properties** **percent\_1m** `number` Growth percentage over last 1 month **percent\_6m** `number` Growth percentage over last 6 months **percent\_12m** `number` Growth percentage over last 12 months > [!NOTE] > > Companies resolved from a Twitter/X identifier return a reduced object built from the X profile: `headquarters` is a free-text string, firmographic fields (`industry`, `size`, `funding`, `growth`…) are `null`, and a `source: "twitter"` field is added. **credits\_used** `number` Credits charged for this request. *** ## Errors | Status | `detail` | Cause | | - | - | - | | 400 | `Invalid encoded company ID: ...` | The `org_` ID could not be decoded | | 400 | `Invalid company identifier: no company slug found in the URL.` | A LinkedIn URL with no slug after `/company/` | | 404 | `Company not found: ...` | No company matches the identifier | | 422 | *(validation array)* | `company_identifier` is missing, `null`, empty or blank | No credits are charged when the request fails. See [Error Codes](/development/errors) for the response formats and the other status codes (401, 402, 429, 503). *** ```bash cURL theme={null} curl -X POST https://api.dataforb2b.ai/enrich/company \ -H "api_key: YOUR_api_key" \ -H "Content-Type: application/json" \ -d '{ "company_identifier": "google" }' ``` ```python Python theme={null} import requests response = requests.post( "https://api.dataforb2b.ai/enrich/company", headers={ "api_key": "YOUR_api_key", "Content-Type": "application/json" }, json={ "company_identifier": "google" } ) data = response.json() company = data.get('company') print(f"Company: {company['name']}") print(f"Industry: {company['industry']}") print(f"Employees: {company['size']['employees']}") print(f"Followers: {company['metrics']['followers']}") ``` ```javascript JavaScript theme={null} const response = await fetch('https://api.dataforb2b.ai/enrich/company', { method: 'POST', headers: { 'api_key': 'YOUR_api_key', 'Content-Type': 'application/json' }, body: JSON.stringify({ company_identifier: 'google' }) }); const data = await response.json(); const company = data.company; console.log('Company:', company.name); console.log('Industry:', company.industry); console.log('Employees:', company.size.employees); console.log('Followers:', company.metrics.followers); ``` # Enrich Profile Source: https://docs.dataforb2b.ai/api-reference/enrich-profile POST /enrich/profile Enrich a profile with requested data (full profile, emails, phone) ## Cost | Data Type | Cost | | :- | -: | | Full profile info | 1 record | | Professional email | 1 record, only when found | | GitHub profile | 1 record | | Personal email | \$0.03 in contact credits, only when found | | Mobile number | \$0.15 in contact credits, only when found | > [!NOTE] > > You are only charged for the data types you request. Accounts created before October 24, 2026 keep their previous credit rates. *** ## Request Body **profile\_identifier** `string` *required* Profile identifier. Supports multiple formats: * **Full URL:** `https://www.linkedin.com/in/john-doe` * **Short URL:** `linkedin.com/in/john-doe` * **Public ID:** `john-doe` * **Encoded ID:** `prof_PVXj1LZJg54zXKcnKNBusu8LgvJX5SYm5QYj` ⭐ (recommended) * **Twitter/X URL or handle:** `https://x.com/janedoe`, `x.com/janedoe`, `@janedoe` > [!NOTE] > > With a Twitter/X identifier, the person is resolved from their X profile and matched to enrich contact data. Email and phone are best-effort for X-sourced profiles — pass a LinkedIn identifier when you have one for the most complete results. **enrich\_profile** `boolean` (default: false) Enrich the full profile data (experience, education, skills, etc.) **enrich\_work\_email** `boolean` (default: false) Enrich professional email address **enrich\_personal\_email** `boolean` (default: false) Enrich personal email address **enrich\_phone** `boolean` (default: false) Enrich phone number **enrich\_github** `boolean` (default: false) Enrich GitHub profile data (repositories, contributions, etc.). Requires the profile to have a GitHub link. **company\_domain** `string` Optional. The company domain you already know for this person (e.g. `acme.com`). The work email is looked for on this domain first, then on the domains of the profile's current companies. Use it when you start from a company or a CRM record. > [!NOTE] > > At least one `enrich_*` field must be set to `true`. *** ## Response **profile** `object` Full profile data (`null` unless `enrich_profile: true`) **profile properties** **id** `string` Encoded profile ID (prof\_xxx) **first\_name** `string` First name **last\_name** `string` Last name **headline** `string` Professional headline **location** `string` Current location **country** `string` Country code **industry** `string` Industry **summary** `string` Profile summary/bio **profile\_language** `string` Profile language code **profile\_picture\_url** `string` Profile picture URL **links** `object` Social media links **links properties** **linkedin** `string` profile URL **twitter** `string | null` Twitter profile URL **github** `string | null` GitHub profile URL **experience** `array` Work experience history **experience item properties** **company** `object` Company information **company properties** **id** `string` Company ID (org\_xxx) **name** `string` Company name **url** `string` Company URL **logo\_url** `string` Company logo URL **size** `string` Company size (e.g., "10,001+ employees") **industry** `string` Company industry **title** `string` Job title **description** `string` Job description **employment\_type** `string` Employment type (e.g., "Full-time", "Contract") **location** `string` Job location **duration\_months** `number` Duration in months **start\_date** `string` Start date (YYYY-MM format) **end\_date** `string | null` End date (YYYY-MM format), null if current **is\_current** `boolean` Whether this is the current position **education** `array` Education history **education item properties** **school** `object` School information **school properties** **id** `string` School ID (edu\_xxx) **name** `string` School name **url** `string` School URL **logo\_url** `string` School logo URL **degree** `string` Degree name **field\_of\_study** `string` Field of study **start\_date** `string` Start year **end\_date** `string` End year **skills** `array` Array of skill names (strings) **certifications** `array` Certifications **certification item properties** **name** `string` Certification name **authority** `string` Issuing authority **url** `string` Certification URL **start\_date** `string` Issue date (YYYY-MM format) **end\_date** `string` Expiration date (YYYY-MM format) **languages** `array` Languages with proficiency **language item properties** **name** `string` Language name **proficiency** `string` Proficiency level (e.g., "Native", "Professional") **metrics** `object` Profile metrics **metrics properties** **followers** `number` Number of followers **skills\_count** `number` Total number of skills **flags** `object` Profile flags (booleans): `premium`, `show_premium_badge`, `creator`, `influencer`, `open_to_work`, `hiring` **badges** `array` Profile badges (strings) **publications, projects, courses, patents, honors, media** `array` Additional profile sections, empty arrays when the profile has none **volunteer** `object` Volunteering: `causes` and `experiences` arrays **work\_email** `string | null` Professional email address (`null` unless `enrich_work_email: true`, or when none was found). Example: "[john.doe@google.com](mailto:john.doe@google.com)" **personal\_email** `string | null` Personal email address (`null` unless `enrich_personal_email: true`, or when none was found). Example: "[john@gmail.com](mailto:john@gmail.com)" **phone** `string | null` Phone number (`null` unless `enrich_phone: true`, or when none was found). Example: "+1 415 555 0123" **git\_profile** `object | null` GitHub profile data (`null` unless `enrich_github: true`). When the GitHub account could not be read, the object is returned with only `github_url` set and the other fields `null`. **git\_profile properties** **username** `string` GitHub username **display\_name** `string` GitHub display name **avatar\_url** `string` GitHub avatar URL **bio** `string | null` GitHub bio **location** `string | null` Location from GitHub profile **company** `string | null` Company from GitHub profile **email** `string | null` Public email from GitHub profile **followers** `number | null` Number of followers **following** `number | null` Number of following **repos\_count** `number` Number of public repositories **starred\_repos** `number` Number of starred repositories **contributions\_last\_year** `number` Number of contributions in the last year **pinned\_repos** `array` Pinned repositories **pinned\_repos item properties** **name** `string` Repository name **description** `string | null` Repository description **language** `string | null` Primary programming language **stars** `number` Number of stars **forks** `number` Number of forks **url** `string` Repository URL **readme\_bio** `string | null` Bio from profile README **achievements** `array` GitHub achievements (array of strings) **highlights** `array` GitHub highlights (array of strings) **github\_url** `string` GitHub profile URL **credits\_used** `number` Credits charged for this request. Only successful enrichments are charged. *** ```bash cURL - Full profile + work email theme={null} curl -X POST https://api.dataforb2b.ai/enrich/profile \ -H "api_key: YOUR_api_key" \ -H "Content-Type: application/json" \ -d '{ "profile_identifier": "prof_PVXj1LZJg54zXKcnKNBusu8LgvJX5SYm5QYj", "enrich_profile": true, "enrich_work_email": true }' ``` ```bash cURL - Full profile + GitHub theme={null} curl -X POST https://api.dataforb2b.ai/enrich/profile \ -H "api_key: YOUR_api_key" \ -H "Content-Type: application/json" \ -d '{ "profile_identifier": "prof_PVXj1LZJg54zXKcnKNBusu8LgvJX5SYm5QYj", "enrich_profile": true, "enrich_github": true }' ``` ```bash cURL - Phone only theme={null} curl -X POST https://api.dataforb2b.ai/enrich/profile \ -H "api_key: YOUR_api_key" \ -H "Content-Type: application/json" \ -d '{ "profile_identifier": "john-doe", "enrich_phone": true }' ``` ```python Python theme={null} import requests # Full profile + work email + GitHub response = requests.post( "https://api.dataforb2b.ai/enrich/profile", headers={ "api_key": "YOUR_api_key", "Content-Type": "application/json" }, json={ "profile_identifier": "prof_PVXj1LZJg54zXKcnKNBusu8LgvJX5SYm5QYj", "enrich_profile": True, "enrich_work_email": True, "enrich_github": True } ) data = response.json() print(f"Profile: {data.get('profile')}") print(f"Work email: {data.get('work_email')}") print(f"GitHub: {data.get('git_profile')}") ``` ```javascript JavaScript theme={null} // Full profile + work email + GitHub const response = await fetch('https://api.dataforb2b.ai/enrich/profile', { method: 'POST', headers: { 'api_key': 'YOUR_api_key', 'Content-Type': 'application/json' }, body: JSON.stringify({ profile_identifier: 'prof_PVXj1LZJg54zXKcnKNBusu8LgvJX5SYm5QYj', enrich_profile: true, enrich_work_email: true, enrich_github: true }) }); const data = await response.json(); console.log('Profile:', data.profile); console.log('Work email:', data.work_email); console.log('GitHub:', data.git_profile); ``` # Search Company Source: https://docs.dataforb2b.ai/api-reference/search-company POST /search/companies Search companies with advanced filters ## Cost 1 record per result. > [!NOTE] > > Accounts created before October 24, 2026 keep their previous credit rate. *** ## Request Body **filters** `object` Filter group to apply to the search. See [Filters](#filters-system) section below. **filters.op** `string` *required* Logical operator to combine conditions. * `and` - All conditions must match * `or` - At least one condition must match * `not` - Excludes records matching all of its conditions **filters.conditions** `array` *required* Array of filter conditions or nested filter groups. **filters.conditions\[].column** `string` *required* Column name to filter on. See [Available Columns](#available-columns) section below for complete list with data types and recommended operators. **Basic Info:** `name`, `tagline`, `description`, `domain`, `universal_name`, `keyword`, `industry` **Size:** `employee_count` (ranges: `1-10`, `11-50`, `51-200`, `201-500`, `501-1000`, `1001-5000`, `5001-10000`, `10001+`) **Headquarters:** `country_iso_code` (ISO 2 letters like "US", "FR", "GB"), `city`, `region` **Offices:** `office_country`, `office_city`, `office_region` **Growth:** `employee_growth_1m`, `employee_growth_6m`, `employee_growth_12m` **Metadata:** `founded_year`, `company_type`, `follower_count`, `page_verified`, `category` **Funding:** `last_funding_amount_usd`, `last_funding_date`, `funding_stage_normalized`, `has_funding` **filters.conditions\[].type** `string` *required* Comparison operator to use. Available operators: * `=` - Exact match * `>` - Greater than * `>=` - Greater than or equal * `<` - Less than * `<=` - Less than or equal * `between` - Between two values (requires `value2`) * `in` - Value is in a list * `like` - Text search (pattern matching) **filters.conditions\[].value** `any` Filter value to compare against. **filters.conditions\[].value2** `any` Second value (only used with `between` operator). **offset** `integer` (default: 0) Number of results to skip for pagination. **count** `integer` (default: 25) Number of results to return. Maximum: 1000. *** ## Filters System ### FilterGroup Structure A FilterGroup combines multiple conditions with a logical operator: ```json theme={null} { "op": "and", "conditions": [...] } ``` | Field | Type | Description | | - | - | - | | `op` | string | Logical operator: `"and"`, `"or"` or `"not"` | | `conditions` | array | List of `FilterCondition` or nested `FilterGroup` (recursive) | ### FilterCondition Structure ```json theme={null} { "column": "name", "type": "like", "value": "Tech", "value2": null } ``` | Field | Type | Description | | - | - | - | | `column` | string | Column name to filter on | | `type` | string | Operator type (see below) | | `value` | any | Filter value | | `value2` | any | Second value (only for `between` operator) | ### Available Operators | Operator | Description | Example | | - | - | - | | `=` | Exact match | `{"column": "name", "type": "=", "value": "Google"}` | | `>` | Greater than | `{"column": "follower_count", "type": ">", "value": 10000}` | | `>=` | Greater than or equal | `{"column": "employee_count", "type": ">=", "value": 100}` | | `<` | Less than | `{"column": "founded_year", "type": "<", "value": 2020}` | | `<=` | Less than or equal | `{"column": "employee_count", "type": "<=", "value": 50}` | | `between` | Between two values | `{"column": "founded_year", "type": "between", "value": 2010, "value2": 2020}` | | `in` | In a list | `{"column": "country_iso_code", "type": "in", "value": ["US", "GB", "CA"]}` | | `like` | Text search | `{"column": "name", "type": "like", "value": "Tech"}` | | `not_in` | Not in a list (`country`, `country_iso_code`, `office_country`, `industry`, `category`, `company_type`) | `{"column": "industry", "type": "not_in", "value": ["staffing and recruiting"]}` | ### How text matching works The operator controls how text is matched — there are no separator characters (comma, pipe, etc.): * **`=`** matches the **exact value**, case-insensitive. On multi-word fields it matches the full phrase, in order — `name = "OpenAI"` is exact. * **`like`** matches records where **all the words appear, in any order** — the best choice for partial or keyword search. `keyword like "artificial intelligence"` matches any company whose name, tagline or description contains both words. * **`in`** takes a **JSON array** and matches any value in it (OR): `"value": ["FR", "US"]`. A comma-separated string like `"FR,US"` is rejected with a `400` error — always pass an array. * **`{"op": "not", "conditions": [...]}`** excludes companies matching all the conditions together, on any column: `{"op": "not", "conditions": [{"column": "keyword", "type": "like", "value": "agency"}]}` removes agencies. *** ## Available Columns ### Basic Info | Column | Type | Operators | Description | | - | - | - | - | | `name` | text | `=`, `like`, `in` | Company name (e.g., "Google", "Microsoft") | | `tagline` | text | `=`, `like` | Company tagline/slogan | | `description` | text | `=`, `like` | Company description | | `domain` | text | `=`, `like`, `in` | Domain name (e.g., "google.com", "microsoft.com") | | `universal_name` | text | `=`, `like`, `in` | Universal slug identifier (e.g., "google", "microsoft") | | `keyword` | text | `like` | Full-text search in name/tagline/description | | `industry` | text | `=`, `like`, `in` | Industry, lowercase (e.g., `software development`, `it services and it consulting`, `financial services`, `business consulting and services`, `advertising services`, `hospitals and health care`) | ### Size | Column | Type | Operators | Description | | - | - | - | - | | `employee_count` | text/int | `=`, `>`, `>=`, `<`, `<=`, `between`, `in` | Number of employees or range (`1-10`, `11-50`, `51-200`, `201-500`, `501-1000`, `1001-5000`, `5001-10000`, `10001+`) | ### Headquarters | Column | Type | Operators | Description | | - | - | - | - | | `country_iso_code` | text | `=`, `in` | Country code ISO 2 letters (e.g., "US", "FR", "GB", "DE", "CA"). Use `GB` (not `UK`) for United Kingdom | | `city` | text | `=`, `like`, `in` | City name (e.g., "Paris", "San Francisco", "London") | | `region` | text | `=`, `like`, `in` | Region/State (e.g., "California", "Île-de-France", "New York") | ### Offices | Column | Type | Operators | Description | | - | - | - | - | | `office_country` | text | `=`, `in` | Office country code ISO 2 letters | | `office_city` | text | `=`, `like`, `in` | Office city name | | `office_region` | text | `=`, `like`, `in` | Office region/state | ### Growth | Column | Type | Operators | Description | | - | - | - | - | | `employee_growth_1m` | float | `=`, `>`, `>=`, `<`, `<=`, `between` | Employee growth percentage over last 1 month | | `employee_growth_6m` | float | `=`, `>`, `>=`, `<`, `<=`, `between` | Employee growth percentage over last 6 months | | `employee_growth_12m` | float | `=`, `>`, `>=`, `<`, `<=`, `between` | Employee growth percentage over last 12 months | ### Metadata | Column | Type | Operators | Description | | - | - | - | - | | `founded_year` | int | `=`, `>`, `>=`, `<`, `<=`, `between` | Year founded (e.g., 1998, 2010, 2020) | | `company_type` | text | `=`, `in` | Company type. Values (uppercase, snake\_case): `PRIVATELY_HELD`, `PUBLIC_COMPANY`, `NON_PROFIT`, `PARTNERSHIP`, `SELF_OWNED`, `EDUCATIONAL`, `SELF_EMPLOYED`, `GOVERNMENT_AGENCY`, `COMPANY`, `SCHOOL`, `SHOWCASE` | | `follower_count` | int | `=`, `>`, `>=`, `<`, `<=`, `between` | Number of followers | | `page_verified` | bool | `=` | Whether company profile is verified (true/false) | | `category` | text | `=`, `like`, `in` | Company category, lowercase (e.g., `software`, `consulting`, `financial services`, `e-commerce`, `health care`, `manufacturing`, `marketing`, `advertising`) | ### Funding | Column | Type | Operators | Description | | - | - | - | - | | `last_funding_amount_usd` | int | `=`, `>`, `>=`, `<`, `<=`, `between` | Last funding round amount in USD | | `last_funding_date` | date | `=`, `>`, `>=`, `<`, `<=` | Last funding round date (e.g., "2023-06-15") | | `funding_stage_normalized` | text | `=`, `like`, `in` | Current funding stage. Values: `seed_round`, `series_a`, `series_b`, `series_c`, `series_d`, `series_e`, `series_f`, `series_g`, `series_h`, `series_unknown`, `pre_seed_round`, `angel_round`, `grant`, `private_equity_round`, `debt_financing`, `convertible_note`, `corporate_round`, `equity_crowdfunding`, `post_ipo_equity`, `post_ipo_debt`, `post_ipo_secondary`, `secondary_market`, `non_equity_assistance`, `product_crowdfunding`, `initial_coin_offering`, `undisclosed`. Both spellings of a stage are matched (`seed` = `seed_round`, `pre_seed` = `pre_seed_round`, `angel` = `angel_round`, `private_equity` = `private_equity_round`) | | `has_funding` | bool | `=` | Whether the company has raised funding (true/false) | *** ## Complex Query Examples > [accordion] Tech companies with 100+ employees in California > > ```json theme={null} > { > "filters": { > "op": "and", > "conditions": [ > {"column": "industry", "type": "like", "value": "technology"}, > {"column": "employee_count", "type": ">=", "value": 100}, > {"column": "region", "type": "=", "value": "California"} > ] > }, > "count": 50 > } > ``` > [accordion] SaaS startups founded after 2015 > > ```json theme={null} > { > "filters": { > "op": "and", > "conditions": [ > {"column": "category", "type": "like", "value": "SaaS"}, > {"column": "founded_year", "type": ">", "value": 2015}, > {"column": "employee_count", "type": "in", "value": ["11-50", "51-200"]} > ] > }, > "count": 100 > } > ``` > [accordion] Fast-growing companies (20%+ growth in 6 months) > > ```json theme={null} > { > "filters": { > "op": "and", > "conditions": [ > {"column": "employee_growth_6m", "type": ">=", "value": 20}, > {"column": "country_iso_code", "type": "in", "value": ["US", "GB", "FR"]}, > {"column": "page_verified", "type": "=", "value": true} > ] > } > } > ``` > [accordion] Companies with offices in multiple countries > > ```json theme={null} > { > "filters": { > "op": "and", > "conditions": [ > {"column": "country_iso_code", "type": "=", "value": "US"}, > { > "op": "or", > "conditions": [ > {"column": "office_country", "type": "=", "value": "FR"}, > {"column": "office_country", "type": "=", "value": "GB"} > ] > } > ] > } > } > ``` *** ## Response **total** `integer` Total number of results matching the filters. **offset** `integer` Offset used for pagination. **count** `integer` Number of results returned in this response. **has\_next\_page** `boolean` Whether more results are available. Use it with `offset` to paginate. **credits\_used** `number` Credits charged for this request. **results** `array` List of companies matching the filters. **company item properties** **id** `string` Encoded company ID (org\_xxx) — pass it to [Enrich Company](/api-reference/enrich-company) **name** `string` Company name **tagline** `string | null` Company tagline/slogan **description** `string | null` Company description **industry** `string | null` Industry, lowercase **headquarters** `object | null` Headquarters: `country` (ISO 2 letters), `city`, `region` **founded\_year** `number | null` Year founded **company\_type** `string | null` Company type (e.g., `PRIVATELY_HELD`, `PUBLIC_COMPANY`) **logo\_url** `string | null` Company logo URL **links** `object` Company links: `website`, `linkedin`, `twitter`, `instagram`, `facebook`, `youtube`, `tiktok`, `github` and other social URLs (each a URL or `null`) **size** `object` `employees` (headcount), `range_min`, `range_max` (`null` for 10001+) **metrics** `object` `followers` **signals** `object` `verified` and `actively_hiring` (booleans) **categories** `array` Company categories/tags (strings) **locations** `array` Office locations: `country`, `city`, `region`, `is_headquarters` **funding** `object | null` Funding summary: `stage`, `total_rounds`, `last_round_amount`, `last_round_currency`, `last_round_date` (YYYY-MM-DD), `rounds` (array of `round`, `amount_usd`, `date`), `investors`, `other_investors_count` **growth** `object | null` Headcount growth in percent: `percent_1m`, `percent_6m`, `percent_12m` (each may be `null`) *** ```bash cURL theme={null} curl -X POST https://api.dataforb2b.ai/search/companies \ -H "api_key: YOUR_api_key" \ -H "Content-Type: application/json" \ -d '{ "filters": { "op": "and", "conditions": [ {"column": "industry", "type": "like", "value": "technology"}, {"column": "country_iso_code", "type": "=", "value": "US"} ] }, "count": 10 }' ``` ```python Python theme={null} import requests response = requests.post( "https://api.dataforb2b.ai/search/companies", headers={ "api_key": "YOUR_api_key", "Content-Type": "application/json" }, json={ "filters": { "op": "and", "conditions": [ {"column": "industry", "type": "like", "value": "technology"}, {"column": "country_iso_code", "type": "=", "value": "US"} ] }, "count": 10 } ) data = response.json() print(f"Found {data['total']} companies") ``` ```javascript JavaScript theme={null} const response = await fetch('https://api.dataforb2b.ai/search/companies', { method: 'POST', headers: { 'api_key': 'YOUR_api_key', 'Content-Type': 'application/json' }, body: JSON.stringify({ filters: { op: 'and', conditions: [ { column: 'industry', type: 'like', value: 'technology' }, { column: 'country_iso_code', type: '=', value: 'US' } ] }, count: 10 }) }); const data = await response.json(); console.log(`Found ${data.total} companies`); ``` ```json Response theme={null} { "total": 10000, "offset": 0, "count": 2, "has_next_page": true, "credits_used": 1.5, "results": [ { "id": "org_ABC123xyz", "name": "TechCorp Solutions", "tagline": "Innovating Tomorrow's Technology Today", "description": "TechCorp Solutions is a leading technology company specializing in cloud infrastructure and enterprise software solutions. We help businesses transform digitally through cutting-edge technology and innovative approaches. Our team of 500+ engineers delivers scalable solutions to Fortune 500 companies worldwide.", "industry": "software development", "headquarters": { "country": "US", "city": "San Francisco", "region": "California" }, "founded_year": 2015, "company_type": "PRIVATELY_HELD", "logo_url": "https://media.licdn.com/dms/image/...", "links": { "website": "https://www.techcorp.com", "instagram": "https://instagram.com/techcorp", "facebook": "https://facebook.com/techcorp", "twitter": "https://twitter.com/techcorp", "youtube": "https://youtube.com/techcorp", "tiktok": null, "github": "https://github.com/techcorp", "behance": null, "spotify": null, "whatsapp": null, "telegram": null, "linktree": null, "other": null, "linkedin": "https://www.linkedin.com/company/techcorp-solutions" }, "size": { "employees": 520, "range_min": 501, "range_max": 1000 }, "metrics": { "followers": 25000 }, "signals": { "verified": true, "actively_hiring": false }, "categories": [ "software", "cloud computing", "enterprise software" ], "locations": [ { "country": "US", "city": "San Francisco", "region": "California", "is_headquarters": true }, { "country": "US", "city": "New York", "region": "New York", "is_headquarters": false }, { "country": "GB", "city": "London", "region": "England", "is_headquarters": false } ], "funding": { "stage": "series_b", "total_rounds": 2, "last_round_amount": 45000000, "last_round_currency": "USD", "last_round_date": "2023-06-15", "rounds": [ {"round": "series_b", "amount_usd": 45000000, "date": "2023-06-15"}, {"round": "series_a", "amount_usd": null, "date": "2021-03-01"} ], "investors": null, "other_investors_count": null }, "growth": { "percent_1m": 3.2, "percent_6m": 18.5, "percent_12m": 45.8 } }, { "id": "org_DEF456abc", "name": "DataAnalytics Pro", "tagline": "Empowering Data-Driven Decisions", "description": "DataAnalytics Pro provides advanced analytics and business intelligence solutions for mid-market companies. Our platform helps organizations unlock insights from their data through AI-powered analytics, real-time dashboards, and predictive modeling.", "industry": "software development", "headquarters": { "country": "US", "city": "Austin", "region": "Texas" }, "founded_year": 2019, "company_type": "PRIVATELY_HELD", "logo_url": "https://media.licdn.com/dms/image/...", "links": { "website": "https://www.dataanalyticspro.com", "instagram": null, "facebook": null, "twitter": "https://twitter.com/dataanalyticspro", "youtube": null, "tiktok": null, "github": null, "behance": null, "spotify": null, "whatsapp": null, "telegram": null, "linktree": null, "other": null, "linkedin": "https://www.linkedin.com/company/dataanalytics-pro" }, "size": { "employees": 85, "range_min": 51, "range_max": 200 }, "metrics": { "followers": 4200 }, "signals": { "verified": false, "actively_hiring": false }, "categories": [ "Analytics", "Business Intelligence", "Data Science" ], "locations": [ { "country": "US", "city": "Austin", "region": "Texas", "is_headquarters": true } ], "funding": { "stage": "series_b", "total_rounds": 2, "last_round_amount": 12000000, "last_round_currency": "USD", "last_round_date": "2022-09-12", "rounds": [ {"round": "series_b", "amount_usd": 12000000, "date": "2022-09-12"}, {"round": "series_a", "amount_usd": null, "date": "2021-03-01"} ], "investors": null, "other_investors_count": null }, "growth": { "percent_1m": 5.6, "percent_6m": 25.0, "percent_12m": 70.0 } } ] } ``` # Count Results Source: https://docs.dataforb2b.ai/api-reference/search-count POST /search/count Count how many records match a FilterGroup, without running the search Return the number of records matching a FilterGroup, without executing the search or fetching any profiles. Useful for showing a live "X results" counter while a user builds or edits their filters. ## Credit Cost | Action | Credits | | - | - | | Count | Free | *** ## Request Body **category** `string` *required* Category to count: `"people"` or `"company"` (`"companies"` is also accepted). **filters** `object` *required* Filters in FilterGroup format, the same structure accepted by `/search/people` and `/search/companies`. > [!NOTE] > > Filters are validated exactly like on the search endpoints: an unknown column, an operator that is not allowed on a column, or an unusable value returns a `400` error. *** ## Response **total\_results** `integer` Number of matching records. Capped at 10,000. **total\_results\_is\_capped** `boolean` `true` when `total_results` reached the 10,000 cap — the real count is higher (display it as "10,000+"). *** ```bash cURL theme={null} curl -X POST https://api.dataforb2b.ai/search/count \ -H "api_key: YOUR_api_key" \ -H "Content-Type: application/json" \ -d '{ "category": "people", "filters": { "op": "and", "conditions": [ {"column": "current_title", "type": "like", "value": "Data Scientist"}, {"column": "current_company", "type": "=", "value": "Google"} ] } }' ``` ```python Python theme={null} import requests response = requests.post( "https://api.dataforb2b.ai/search/count", headers={ "api_key": "YOUR_api_key", "Content-Type": "application/json" }, json={ "category": "people", "filters": { "op": "and", "conditions": [ {"column": "current_title", "type": "like", "value": "Data Scientist"}, {"column": "current_company", "type": "=", "value": "Google"} ] } } ) data = response.json() print(f"{data['total_results']}{'+' if data['total_results_is_capped'] else ''} results") ``` ```javascript JavaScript theme={null} const response = await fetch('https://api.dataforb2b.ai/search/count', { method: 'POST', headers: { 'api_key': 'YOUR_api_key', 'Content-Type': 'application/json' }, body: JSON.stringify({ category: 'people', filters: { op: 'and', conditions: [ { column: 'current_title', type: 'like', value: 'Data Scientist' }, { column: 'current_company', type: '=', value: 'Google' } ] } }) }); const data = await response.json(); console.log(`${data.total_results}${data.total_results_is_capped ? '+' : ''} results`); ``` ```json Response theme={null} { "total_results": 242, "total_results_is_capped": false } ``` # Search Jobs Source: https://docs.dataforb2b.ai/api-reference/search-jobs POST /search/jobs Search job postings on LinkedIn and Indeed ## Credit Cost | Mode | Credits | | - | - | | All searches | 0.25 credits per job posting returned | > [!NOTE] > > Accounts created before October 24, 2026 keep their previous rate, billed per 10 job postings. *** ## Request Body **platform** `string` (default: linkedin) Job platform to search: `linkedin` or `indeed`. **keyword** `string` Search keyword: job title, skill, or company (e.g., `"backend engineer"`). **location** `string` Location to search in (e.g., `"Paris, France"`, `"United States"`). The universal geo param — used by both platforms. **country** `string` (default: usa) **Indeed only — optional.** Selects the Indeed country site. Auto-derived from `location` when it names a country (e.g. `"Lyon, France"` → France). Pass it explicitly only to override, or when `location` has no country. Ignored by LinkedIn. **distance** `integer` Search radius in miles around the location (0–200). **job\_type** `string` Employment type: `fulltime`, `parttime`, `contract`, `temporary`, `internship`. **work\_type** `string` Work arrangement: `onsite`, `remote`, `hybrid`. **experience\_level** `string` Seniority (LinkedIn only): `internship`, `entry_level`, `associate`, `mid_senior`, `director`, `executive`. **date\_posted** `string` Freshness of the postings: `past_24h`, `past_week`, `past_month`. > [!WARNING] > > On Indeed, `date_posted` cannot be combined with `job_type` or `work_type`: when both are sent, only one of them is applied. > [!NOTE] > > `job_type`, `work_type`, `experience_level` and `date_posted` only accept the values listed above. Any other value returns a `422` validation error. **company\_ids** `string` Comma-separated company IDs to restrict the search (LinkedIn only). Accepts encoded IDs (`org_xxx`, as returned by [Typeahead](/api-reference/typeahead) and [Search Company](/api-reference/search-company)) and/or raw numeric LinkedIn IDs. **company\_name** `string` Company name to restrict the search to a single employer's postings (both platforms resolve it to that company's jobs). Combine with `keyword` and/or `location` to narrow within the company. Ignored if `company_ids` is provided. **fetch\_description** `boolean` (default: false) Include the full job description on each result. On LinkedIn this is slower (one extra request per job); on Indeed it adds no latency. **offset** `integer` (default: 0) Number of results to skip for pagination. **count** `integer` (default: 25) Number of job postings to return. Maximum: 100 per request. *** ## Response **total** `integer` Total number of matching job postings. On LinkedIn this is the platform's global count (capped at `1000` — shown as "1,000+" — for very large result sets). On Indeed, which exposes no global count, it's a lower bound (how many were enumerated so far); use `has_next` to know if more exist. **offset** `integer` Offset used for pagination. **count** `integer` Number of results returned in this response. **has\_next** `boolean` Whether more results are available. Use it with `offset` to paginate. **credits\_used** `number` Credits used for this search. **results** `array` List of job postings, normalized across platforms. **job posting properties** **job\_id** `string` Platform job ID **platform** `string` Source platform (`linkedin`, `indeed`) **title** `string` Job title **job\_url** `string` URL of the job posting **employment\_type** `string` Employment type (e.g., "Full-time") **seniority\_level** `string` Seniority level (e.g., "Mid-Senior level") **job\_function** `string` Job function (e.g., "Engineering") **is\_remote** `boolean` Whether the job is remote **company\_name** `string` Hiring company name **company\_url** `string` Hiring company page URL **company\_logo\_url** `string` Hiring company logo URL **industry** `string` Company industry **location** `string` Job location **salary** `string` Salary information when published **date\_posted** `string` Date the job was posted (e.g., "2026-07-06") **posted\_days\_ago** `integer` Days since the job was posted **description** `string` Full job description (only when `fetch_description` is true) *** ```bash cURL theme={null} curl -X POST https://api.dataforb2b.ai/search/jobs \ -H "api_key: YOUR_api_key" \ -H "Content-Type: application/json" \ -d '{ "platform": "linkedin", "keyword": "backend engineer", "location": "Paris, France", "job_type": "fulltime", "date_posted": "past_week", "count": 25 }' ``` ```python Python theme={null} import requests response = requests.post( "https://api.dataforb2b.ai/search/jobs", headers={ "api_key": "YOUR_api_key", "Content-Type": "application/json" }, json={ "platform": "linkedin", "keyword": "backend engineer", "location": "Paris, France", "job_type": "fulltime", "date_posted": "past_week", "count": 25 } ) data = response.json() print(f"Got {data['count']} jobs") ``` ```javascript JavaScript theme={null} const response = await fetch('https://api.dataforb2b.ai/search/jobs', { method: 'POST', headers: { 'api_key': 'YOUR_api_key', 'Content-Type': 'application/json' }, body: JSON.stringify({ platform: 'linkedin', keyword: 'backend engineer', location: 'Paris, France', job_type: 'fulltime', date_posted: 'past_week', count: 25 }) }); const data = await response.json(); console.log(`Got ${data.count} jobs`); ``` ```json Response theme={null} { "total": 25, "offset": 0, "count": 2, "has_next": true, "credits_used": 1.5, "results": [ { "job_id": "4436084243", "platform": "linkedin", "title": "Backend Engineer - Node.js / Typescript", "job_url": "https://fr.linkedin.com/jobs/view/backend-engineer-node-js-typescript-at-cozycozy-com-4374111498", "employment_type": "Full-time", "seniority_level": "Mid-Senior level", "job_function": "Engineering", "is_remote": null, "company_name": "cozycozy.com", "company_url": "https://www.linkedin.com/company/cozycozy", "company_logo_url": "https://media.licdn.com/dms/image/...", "industry": null, "location": "Paris, Île-de-France, France", "salary": null, "date_posted": "2026-07-06", "posted_days_ago": 4, "description": null }, { "job_id": "4430700343", "platform": "linkedin", "title": "Full-Stack Developer (junior)", "job_url": "https://fr.linkedin.com/jobs/view/full-stack-developer-junior-at-leonar-4436084243", "employment_type": "Full-time", "seniority_level": "Entry level", "job_function": "Engineering", "is_remote": null, "company_name": "Leonar", "company_url": "https://www.linkedin.com/company/leonar-app", "company_logo_url": "https://media.licdn.com/dms/image/...", "industry": null, "location": "Paris, Île-de-France, France", "salary": null, "date_posted": "2026-07-05", "posted_days_ago": 5, "description": null } ] } ``` # Search People Source: https://docs.dataforb2b.ai/api-reference/search-people POST /search/people Search professional profiles with advanced filters ## Cost 1 record per result. > [!NOTE] > > Accounts created before October 24, 2026 keep their previous credit rate. *** ## Request Body **filters** `object` Filter group to apply to the search. See [Filters](#filters-system) section below. **filters.op** `string` *required* Logical operator to combine conditions. * `and` - All conditions must match * `or` - At least one condition must match * `not` - Excludes records matching all of its conditions **filters.conditions** `array` *required* Array of filter conditions or nested filter groups. **filters.conditions\[].column** `string` *required* Column name to filter on. See [Available Columns](#available-columns) section below for complete list with data types and recommended operators. **Profile:** `first_name`, `last_name`, `profile_location`, `profile_country`, `profile_industry`, `follower_count`, `keyword` **Current Job:** `current_company`, `current_title`, `current_job_location`, `current_company_industry`, `current_company_category`, `current_company_size` (values: `2-10`, `11-50`, `51-200`, `201-500`, `501-1000`, `1001-5000`, `5001-10000`, `10001+`), `current_company_id`, `current_employment_type`, `years_in_current_position`, `years_at_current_company`, `current_company_has_funding`, `current_company_funding_stage`, `current_company_investor` **Past Jobs:** `past_company`, `past_title`, `past_company_industry`, `past_company_size` (same values as current\_company\_size), `past_company_id`, `past_employment_type`, `years_at_past_company` **Skills:** `skill` (e.g., "Python", "JavaScript", "Machine Learning") **Education:** `school`, `degree`, `degree_level` (`Bachelor`, `Master`, `PhD`, `Associate`, `Certificate`, `High School`), `field_of_study` **Languages:** `language` (full name), `language_iso` (ISO code like "en", "fr"), `language_proficiency` (`NATIVE_OR_BILINGUAL`, `FULL_PROFESSIONAL`, `PROFESSIONAL_WORKING`, `LIMITED_WORKING`, `ELEMENTARY`) **Certifications:** `certification`, `certification_authority` **Experience:** `years_of_experience` (total career), `num_total_jobs` (number of positions), `is_currently_employed` (boolean) **filters.conditions\[].type** `string` *required* Comparison operator to use. Available operators: * `=` - Exact match * `>` - Greater than * `>=` - Greater than or equal * `<` - Less than * `<=` - Less than or equal * `between` - Between two values (requires `value2`) * `in` - Value is in a list * `like` - Text search (pattern matching) * `!=`, `not_in`, `not_like` - Exclusion (negation of `=`, `in`, `like`) **filters.conditions\[].value** `any` Filter value to compare against. **filters.conditions\[].value2** `any` Second value (only used with `between` operator). **offset** `integer` (default: 0) Number of results to skip for pagination. **count** `integer` (default: 25) Number of results to return. Maximum: 5000. *** ## Filters System ### FilterGroup Structure A FilterGroup combines multiple conditions with a logical operator: ```json theme={null} { "op": "and", "conditions": [...] } ``` | Field | Type | Description | | - | - | - | | `op` | string | Logical operator: `"and"`, `"or"` or `"not"` | | `conditions` | array | List of `FilterCondition` or nested `FilterGroup` (recursive) | ### FilterCondition Structure ```json theme={null} { "column": "first_name", "type": "=", "value": "John", "value2": null } ``` | Field | Type | Description | | - | - | - | | `column` | string | Column name to filter on | | `type` | string | Operator type (see below) | | `value` | any | Filter value | | `value2` | any | Second value (only for `between` operator) | ### Available Operators | Operator | Description | Example | | - | - | - | | `=` | Exact match | `{"column": "first_name", "type": "=", "value": "John"}` | | `>` | Greater than | `{"column": "follower_count", "type": ">", "value": 1000}` | | `>=` | Greater than or equal | `{"column": "years_of_experience", "type": ">=", "value": 5}` | | `<` | Less than | `{"column": "years_at_current_company", "type": "<", "value": 2}` | | `<=` | Less than or equal | `{"column": "follower_count", "type": "<=", "value": 500}` | | `between` | Between two values | `{"column": "years_of_experience", "type": "between", "value": 3, "value2": 7}` | | `in` | In a list | `{"column": "profile_country", "type": "in", "value": ["US", "GB", "CA"]}` | | `like` | Text search | `{"column": "current_title", "type": "like", "value": "Engineer"}` | | `!=` | Not equal | `{"column": "current_title", "type": "!=", "value": "Intern"}` | | `not_in` | Not in a list | `{"column": "current_company", "type": "not_in", "value": ["Google", "Meta"]}` | | `not_like` | Text search exclusion | `{"column": "skill", "type": "not_like", "value": "php"}` | ### How text matching works The operator controls how text is matched — there are no separator characters (comma, pipe, etc.): * **`=`** matches the **exact value**, case-insensitive. On multi-word fields it matches the full phrase, in order — `current_company = "Y Combinator"` matches, `"Combinator Y"` does not. * **`like`** matches records where **all the words appear, in any order** — the best choice for partial or keyword search. `keyword like "growth marketing"` matches "Growth & Performance Marketing Lead". * **`in`** takes a **JSON array** and matches any value in it (OR): `"value": ["Google", "Meta"]`. A comma-separated string like `"Google,Meta"` is rejected with a `400` error — always pass an array. * **`!=`, `not_in`, `not_like`** exclude the profiles that `=`, `in` or `like` would match. They work on every text column. On list fields (skills, schools, languages, positions) a profile is excluded if any of its entries matches: `skill not_in ["PHP"]` removes everyone with PHP listed. * **`{"op": "not", "conditions": [...]}`** excludes profiles matching all the conditions together, e.g. people currently at Google who also list Go. > [!NOTE] > > Titles are free-form (e.g. "Senior Software Engineer, Platform @ Acme"), so search for the part that matters — `current_title like "software engineer"` — rather than a full exact title. *** ## Available Columns ### Profile | Column | Type | Recommended Operators | Description | | - | - | - | - | | `first_name` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Person's first name | | `last_name` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Person's last name | | `profile_location` | text | `=`, `like`, `!=`, `not_like` | Current location (city, state) | | `profile_country` | text | `=`, `in`, `!=`, `not_in` | Country code ISO 2 letters, uppercase (e.g., "US", "GB", "FR", "DE", "CA"). Note: use `GB` (not `UK`) for United Kingdom | | `profile_industry` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Profile industry | | `follower_count` | int | `=`, `>`, `>=`, `<`, `<=`, `between` | Number of profile followers | | `keyword` | text | `=`, `like`, `!=`, `not_like` | Full-text search in headline (trigram matching) | | `summary` | text | `=`, `like`, `!=`, `not_like` | Full-text search in the profile's About section | ### Current Job | Column | Type | Operators | Description | | - | - | - | - | | `current_company` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Current employer name | | `current_title` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Current job title. Use `like` with the key part of the title, e.g. `"software engineer"` (all words must appear, any order); `=` matches the exact phrase in order | | `current_job_location` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Current job location (city, state) | | `current_company_industry` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Industry of current employer, capitalized (e.g., "Information Technology & Services", "Computer Software", "Hospital & Health Care", "Financial Services", "Marketing & Advertising") | | `current_company_category` | text | `=`, `like`, `in`, `not_in` | Category of current employer, lowercase (e.g., `software`, `consulting`, `financial services`, `e-commerce`, `health care`) | | `current_company_size` | text | `=`, `in`, `!=`, `not_in` | Company size range (`2-10`, `11-50`, `51-200`, `201-500`, `501-1000`, `1001-5000`, `5001-10000`, `10001+`) | | `current_company_id` | text | `=`, `in`, `!=`, `not_in` | Company identifier | | `current_employment_type` | text | `=`, `in`, `!=`, `not_in` | Employment type. Values: "Full-time", "Part-time", "Self-employed", "Freelance", "Contract", "Permanent", "Permanent Full-time", "Permanent Part-time", "Contract Full-time", "Contract Part-time", "Internship", "Apprenticeship", "Seasonal" | | `years_in_current_position` | int | `=`, `>`, `>=`, `<`, `<=`, `between` | Years in current role | | `years_at_current_company` | int | `=`, `>`, `>=`, `<`, `<=`, `between` | Years at current company | | `current_company_has_funding` | bool | `=` | Whether the current company has received funding (true/false) | | `current_company_funding_stage` | text | `=`, `in`, `!=`, `not_in` | Funding stage of the current company. Values: `seed_round`, `series_a`, `series_b`, `series_c`, `series_d`, `series_e`, `series_f`, `series_g`, `series_h`, `series_unknown`, `pre_seed_round`, `angel_round`, `grant`, `private_equity_round`, `debt_financing`, `convertible_note`, `corporate_round`, `equity_crowdfunding`, `post_ipo_equity`, `post_ipo_debt`, `post_ipo_secondary`, `secondary_market`, `non_equity_assistance`, `product_crowdfunding`, `initial_coin_offering`, `undisclosed`. Note: data also contains some legacy values without `_round` suffix (`seed`, `pre_seed`, `angel`, `private_equity`) — use `in` with both forms for max coverage | | `current_company_investor` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Investor name of the current company. Supports partial matching with `like` | ### Past Jobs | Column | Type | Operators | Description | | - | - | - | - | | `past_company` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Former employer name | | `past_title` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Previous job title. Same matching as `current_title`: `like` = all words in any order, `=` = exact phrase in order | | `past_company_industry` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Industry of former employer | | `past_company_size` | text | `=`, `in`, `!=`, `not_in` | Former company size range (same values as current\_company\_size) | | `past_company_id` | text | `=`, `in`, `!=`, `not_in` | Company identifier of former employer | | `past_employment_type` | text | `=`, `in`, `!=`, `not_in` | Past employment type | | `years_at_past_company` | int | `=`, `>`, `>=`, `<`, `<=`, `between` | Years spent at former company | ### Skills | Column | Type | Operators | Description | | - | - | - | - | | `skill` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Skills listed on profile (e.g., "Python", "JavaScript", "Machine Learning") | ### Education | Column | Type | Operators | Description | | - | - | - | - | | `school` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Educational institution name | | `degree` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Degree name | | `degree_level` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Normalized degree level. Values: `Bachelor`, `Master`, `PhD`, `Associate`, `Certificate`, `High School`, `Other`. Only set on a small share of profiles — for broad coverage use `degree` with `like` (e.g. `"master"`) | | `field_of_study` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Major or field of study | ### Languages | Column | Type | Operators | Description | | - | - | - | - | | `language` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Language name (e.g., "English", "French", "Spanish") | | `language_iso` | text | `=`, `in`, `!=`, `not_in` | ISO language code (e.g., "en", "fr", "es") | | `language_proficiency` | text | `=`, `in`, `!=`, `not_in` | Proficiency level. Values: `NATIVE_OR_BILINGUAL`, `FULL_PROFESSIONAL`, `PROFESSIONAL_WORKING`, `LIMITED_WORKING`, `ELEMENTARY` | ### Certifications | Column | Type | Operators | Description | | - | - | - | - | | `certification` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Certification name (e.g., "AWS Certified", "PMP", "CPA") | | `certification_authority` | text | `=`, `like`, `in`, `!=`, `not_in`, `not_like` | Issuing organization (e.g., "Amazon Web Services", "PMI") | ### Experience | Column | Type | Operators | Description | | - | - | - | - | | `years_of_experience` | int | `=`, `>`, `>=`, `<`, `<=`, `between` | Total years of professional experience | | `num_total_jobs` | int | `=`, `>`, `>=`, `<`, `<=`, `between` | Total number of positions held | | `is_currently_employed` | bool | `=` | Whether person is currently employed (true/false) | *** ## Complex Query Examples > [accordion] Senior developers at FAANG companies > > ```json theme={null} > { > "filters": { > "op": "and", > "conditions": [ > {"column": "current_company", "type": "in", "value": ["Google", "Apple", "Facebook", "Amazon", "Microsoft"]}, > {"column": "current_title", "type": "like", "value": "Senior"}, > {"column": "skill", "type": "in", "value": ["Python", "Java", "Go"]}, > {"column": "years_of_experience", "type": ">=", "value": 8} > ] > }, > "count": 100 > } > ``` > [accordion] Ex-consultants from McKinsey/BCG now at startups > > ```json theme={null} > { > "filters": { > "op": "and", > "conditions": [ > {"column": "past_company", "type": "in", "value": ["McKinsey", "BCG", "Bain"]}, > {"column": "current_company_size", "type": "in", "value": ["2-10", "11-50"]}, > {"column": "current_title", "type": "like", "value": "Founder"} > ] > }, > "count": 50 > } > ``` > [accordion] Engineers at Series A/B funded companies backed by Sequoia > > ```json theme={null} > { > "filters": { > "op": "and", > "conditions": [ > {"column": "current_title", "type": "like", "value": "Engineer"}, > {"column": "current_company_has_funding", "type": "=", "value": true}, > {"column": "current_company_funding_stage", "type": "in", "value": ["series_a", "series_b"]}, > {"column": "current_company_investor", "type": "like", "value": "Sequoia"} > ] > }, > "count": 50 > } > ``` > [accordion] OR search (profiles with Python OR JavaScript) > > ```json theme={null} > { > "filters": { > "op": "and", > "conditions": [ > {"column": "profile_country", "type": "=", "value": "US"}, > { > "op": "or", > "conditions": [ > {"column": "skill", "type": "=", "value": "Python"}, > {"column": "skill", "type": "=", "value": "JavaScript"} > ] > } > ] > } > } > ``` *** ## Response **total** `integer` Total number of results matching the filters. Capped at 10,000. **total\_is\_capped** `boolean` `true` when `total` reached the 10,000 cap — the real count is higher (display it as "10,000+"). **offset** `integer` Offset used for pagination. **count** `integer` Number of results returned in this response. **has\_next\_page** `boolean` Whether more results are available. Use it with `offset` to paginate. **credits\_used** `number` Credits charged for this request. **results** `array` List of profiles matching the filters. **profile item properties** **id** `string` Encoded profile ID (prof\_xxx) — pass it to [Enrich Profile](/api-reference/enrich-profile) **first\_name** `string` First name **last\_name** `string` Last name **headline** `string | null` Professional headline **location** `string | null` Current location **country** `string | null` Country code ISO 2 letters (e.g., "US", "GB", "FR") **industry** `string | null` Profile industry **summary** `string | null` Profile summary/bio **profile\_language** `string | null` Profile language code (e.g., "en\_US") **profile\_picture\_url** `string | null` Profile picture URL **links** `object` Profile links: `linkedin`, `twitter`, `github` (each a URL or `null`) **experience** `array` Work experience. Each item has a `company` object (`id`, `name`, `url`, `logo_url`, `size`, `industry`), `title`, `description`, `employment_type`, `location`, `duration_months`, `start_date` (YYYY-MM), `end_date` (YYYY-MM, `null` if current) and `is_current`. **education** `array` Education history. Each item has a `school` object (`id`, `name`, `url`, `logo_url`), `degree`, `field_of_study`, `activities`, `grade`, `description`, `start_date` and `end_date` (years). **skills** `array` Skill names (strings) **certifications** `array` Certifications: `name`, `authority`, `url`, `start_date`, `end_date` **languages** `array` Languages: `name` and `proficiency` (`NATIVE_OR_BILINGUAL`, `FULL_PROFESSIONAL`, `PROFESSIONAL_WORKING`, `LIMITED_WORKING`, `ELEMENTARY`) **metrics** `object` `followers` and `skills_count` *** ```bash cURL theme={null} curl -X POST https://api.dataforb2b.ai/search/people \ -H "api_key: YOUR_api_key" \ -H "Content-Type: application/json" \ -d '{ "filters": { "op": "and", "conditions": [ {"column": "current_title", "type": "like", "value": "Engineer"}, {"column": "profile_country", "type": "=", "value": "US"} ] }, "count": 10 }' ``` ```python Python theme={null} import requests response = requests.post( "https://api.dataforb2b.ai/search/people", headers={ "api_key": "YOUR_api_key", "Content-Type": "application/json" }, json={ "filters": { "op": "and", "conditions": [ {"column": "current_title", "type": "like", "value": "Engineer"}, {"column": "profile_country", "type": "=", "value": "US"} ] }, "count": 10 } ) data = response.json() print(f"Found {data['total']} profiles") ``` ```javascript JavaScript theme={null} const response = await fetch('https://api.dataforb2b.ai/search/people', { method: 'POST', headers: { 'api_key': 'YOUR_api_key', 'Content-Type': 'application/json' }, body: JSON.stringify({ filters: { op: 'and', conditions: [ { column: 'current_title', type: 'like', value: 'Engineer' }, { column: 'profile_country', type: '=', value: 'US' } ] }, count: 10 }) }); const data = await response.json(); console.log(`Found ${data.total} profiles`); ``` ```json Response theme={null} { "total": 10000, "total_is_capped": true, "offset": 0, "count": 2, "has_next_page": true, "credits_used": 1.5, "results": [ { "id": "prof_PVURNGJihYludzaOwFCAwNajijSHFi6H0L9R", "first_name": "Sarah", "last_name": "Martinez", "headline": "Senior Software Engineer at Google | Cloud Infrastructure", "location": "San Francisco Bay Area, California", "country": "US", "industry": "Computer Software", "summary": "Passionate software engineer with 8+ years of experience building scalable cloud infrastructure. Specialized in Kubernetes, distributed systems, and site reliability engineering. Led multiple teams in delivering high-impact projects for millions of users.", "profile_language": "en_US", "profile_picture_url": "https://media.licdn.com/dms/image/...", "links": { "linkedin": "https://www.linkedin.com/in/sarah-martinez-engineer", "twitter": "https://twitter.com/sarahdev", "github": "https://github.com/smartinez" }, "experience": [ { "company": { "id": "org_google", "name": "Google", "url": "https://linkedin.com/company/google", "logo_url": "https://media.licdn.com/dms/image/...", "size": "10001+", "industry": "Information Technology & Services" }, "title": "Senior Software Engineer", "description": "Lead engineer for Google Cloud infrastructure, managing Kubernetes clusters at scale. Reduced deployment time by 40% through automation and improved system reliability to 99.99% uptime.", "employment_type": "Full-time", "location": "Mountain View, California", "duration_months": 36, "start_date": "2021-09", "end_date": null, "is_current": true }, { "company": { "id": "org_amazon", "name": "Amazon", "url": "https://linkedin.com/company/amazon", "logo_url": "https://media.licdn.com/dms/image/...", "size": "10001+", "industry": "Internet" }, "title": "Software Engineer II", "description": "Developed microservices for AWS infrastructure. Built monitoring and alerting systems processing millions of events daily.", "employment_type": "Full-time", "location": "Seattle, Washington", "duration_months": 30, "start_date": "2019-03", "end_date": "2021-08", "is_current": false }, { "company": { "id": "org_microsoft", "name": "Microsoft", "url": "https://linkedin.com/company/microsoft", "logo_url": "https://media.licdn.com/dms/image/...", "size": "10001+", "industry": "Computer Software" }, "title": "Software Engineer", "description": "Azure infrastructure development and DevOps automation.", "employment_type": "Full-time", "location": "Redmond, Washington", "duration_months": 24, "start_date": "2017-03", "end_date": "2019-02", "is_current": false } ], "education": [ { "school": { "id": "edu_0lox4Unn3pMSqjJXEFXX1n5YqgKPsQZQlAmZ", "name": "Stanford University", "url": "https://www.linkedin.com/school/stanford-university/", "logo_url": "https://media.licdn.com/dms/image/..." }, "degree": "Master of Science - MS", "field_of_study": "Computer Science", "activities": "Teaching Assistant for CS 106A", "grade": "3.9 GPA", "description": "Focus on distributed systems and machine learning", "start_date": "2015", "end_date": "2017" }, { "school": { "id": "edu_0lox4Unn3pMSqjJXEFXX1n5YqgKPsQZSAIQJ", "name": "UC Berkeley", "url": "https://www.linkedin.com/school/uc-berkeley/", "logo_url": "https://media.licdn.com/dms/image/..." }, "degree": "Bachelor of Science - BS", "field_of_study": "Computer Engineering", "activities": "IEEE Computer Society, Hackathons", "grade": "3.8 GPA", "description": null, "start_date": "2011", "end_date": "2015" } ], "skills": [ "Python", "Kubernetes", "Docker", "Go", "Terraform", "AWS", "Google Cloud Platform", "Distributed Systems", "Site Reliability Engineering", "CI/CD", "Monitoring & Alerting", "System Design" ], "certifications": [ { "name": "Google Cloud Professional Architect", "authority": "Google Cloud", "url": "https://www.credential.net/...", "start_date": "2022-03", "end_date": "2025-03" }, { "name": "Certified Kubernetes Administrator (CKA)", "authority": "Cloud Native Computing Foundation", "url": "https://www.credly.com/badges/...", "start_date": "2021-06", "end_date": "2024-06" } ], "languages": [ { "name": "English", "proficiency": "NATIVE_OR_BILINGUAL" }, { "name": "Spanish", "proficiency": "NATIVE_OR_BILINGUAL" }, { "name": "French", "proficiency": "LIMITED_WORKING" } ], "metrics": { "followers": 4200, "skills_count": 12 } }, { "id": "prof_QWXj2MZKh65aYLdoLGDvwOckljTIGj7I1M0S", "first_name": "Michael", "last_name": "Chen", "headline": "Product Manager at Salesforce | B2B SaaS Expert", "location": "Seattle, Washington", "country": "US", "industry": "Computer Software", "summary": null, "profile_language": "en_US", "profile_picture_url": "https://media.licdn.com/dms/image/...", "links": { "linkedin": "https://www.linkedin.com/in/michael-chen-pm", "twitter": null, "github": null }, "experience": [ { "company": { "id": "org_salesforce", "name": "Salesforce", "url": "https://linkedin.com/company/salesforce", "logo_url": "https://media.licdn.com/dms/image/...", "size": "10001+", "industry": "Computer Software" }, "title": "Senior Product Manager", "description": "Leading product strategy for enterprise CRM features. Managed a portfolio generating $50M+ ARR. Launched 3 major features adopted by 1000+ enterprise customers.", "employment_type": "Full-time", "location": "Seattle, Washington", "duration_months": 28, "start_date": "2022-05", "end_date": null, "is_current": true }, { "company": { "id": "org_microsoft", "name": "Microsoft", "url": "https://linkedin.com/company/microsoft", "logo_url": "https://media.licdn.com/dms/image/...", "size": "10001+", "industry": "Computer Software" }, "title": "Product Manager", "description": "Product management for Microsoft Teams enterprise features", "employment_type": "Full-time", "location": "Redmond, Washington", "duration_months": 36, "start_date": "2019-05", "end_date": "2022-04", "is_current": false } ], "education": [ { "school": { "id": "edu_0lox4Unn3pMSqjJXEFXX1n5YqgKPsQZUTajN", "name": "MIT Sloan School of Management", "url": "https://www.linkedin.com/school/mit-sloan/", "logo_url": "https://media.licdn.com/dms/image/..." }, "degree": "Master of Business Administration - MBA", "field_of_study": "Technology & Innovation Management", "activities": null, "grade": null, "description": null, "start_date": "2017", "end_date": "2019" }, { "school": { "id": null, "name": "University of Washington", "url": null, "logo_url": null }, "degree": "Bachelor of Science - BS", "field_of_study": "Business Administration", "activities": null, "grade": null, "description": null, "start_date": "2013", "end_date": "2017" } ], "skills": [ "Product Management", "Product Strategy", "Agile Methodologies", "Roadmap Planning", "B2B SaaS", "User Research", "Data Analysis", "SQL", "A/B Testing" ], "certifications": [ { "name": "Certified Scrum Product Owner (CSPO)", "authority": "Scrum Alliance", "url": null, "start_date": "2020-08", "end_date": null } ], "languages": [ { "name": "English", "proficiency": "NATIVE_OR_BILINGUAL" }, { "name": "Mandarin Chinese", "proficiency": "PROFESSIONAL_WORKING" } ], "metrics": { "followers": 2800, "skills_count": 9 } } ] } ``` # Search Social Posts Source: https://docs.dataforb2b.ai/api-reference/search-posts POST /search/posts Search posts on LinkedIn, Twitter/X and Reddit Search posts by keyword across platforms. Every platform returns the **same normalized post schema**, so you parse LinkedIn, Twitter and Reddit results identically. Each post carries its author — a lead you can pass to [Enrich Profile](/api-reference/enrich-profile). ## Credit Cost | Mode | Credits | | - | - | | Posts | 3 credits per post returned | | Engagers (`include`) | 2 credits per reaction or comment returned | > [!NOTE] > > Accounts created before October 24, 2026 keep their previous rate, billed per 10 posts or engagers. *** ## Request Body **platform** `string` (default: linkedin) Platform to search: `linkedin`, `twitter`, or `reddit`. **keyword** `string` Search keyword or phrase in the post content (e.g., `"looking for a CRM"`). On Twitter you can use advanced operators (`OR`, quoted phrases, `-word`). **match** `string` (default: strict) Keyword matching mode: * `strict` (default) — only returns posts whose text **actually contains** the searched terms. Platforms match loosely by default (a keyword can appear only as a stock ticker, inside a link, or scattered across the post), so strict mode filters that noise out. Bare words are required (AND); quoted phrases are alternatives (OR). * `loose` — returns the platform's raw results without post-filtering. **date\_posted** `string` Freshness of the posts: `past_24h`, `past_week`, `past_month`. Mapped to each platform's native time window. **sort\_by** `string` (default: date\_posted) Ordering: `date_posted` (freshest first) or `relevance` (most relevant/engaged). **subreddit** `string` **Reddit only.** Restrict the search to one subreddit (e.g., `"SaaS"`). **author\_company** `string` **LinkedIn only.** Restrict to posts by employees of a company — pass a name (auto-resolved to the company) or a numeric LinkedIn company ID. **author\_industry** `string` **LinkedIn only.** Restrict to authors in an industry. **author\_job\_title** `string` **LinkedIn only.** Restrict to authors with a job title (e.g., `"Head of Sales"`). **content\_type** `string` **LinkedIn only.** Restrict to a content type: `ARTICLE`, `VIDEO`, `PHOTO`, `DOCUMENT`. **offset** `integer` (default: 0) Number of results to skip for pagination (LinkedIn). **count** `integer` (default: 10) Number of posts to return. Maximum: 100 per request. **include** `array` Attach the people who engaged with each returned post. Any of `["reactions", "comments"]`. Each post then carries a `reactions` and/or `comments` array of engagers (name, headline, profile URL) — leads you can pass to [Enrich Profile](/api-reference/enrich-profile). Reddit has no reactions, so only `comments` applies there. **engagement\_count** `integer` (default: 25) Max engagers to return per type, per post, when `include` is set (1–1000). **post\_url** `string` Fetch the engagers of one specific post instead of running a keyword search. Pass a post URL; the response returns that single post with its `reactions` and `comments` arrays (bounded by `engagement_count`). Use `include` to restrict to one type. *** ## Response **total** `integer` Total matching posts on LinkedIn; a lower bound (enumerated so far) on Twitter/Reddit, which expose no global count — use `has_next` to know if more exist. **offset** `integer` Offset used for pagination. **count** `integer` Number of results returned in this response. **has\_next** `boolean` Whether more results are available. **credits\_used** `number` Credits used for this search. **results** `array` List of posts, normalized across platforms. Same core fields everywhere; a few platform-specific extras on top. **post properties** **post\_id** `string` Platform post ID **platform** `string` Source platform (`linkedin`, `twitter`, `reddit`) **url** `string` URL of the post **text** `string` Post text content **created\_at** `string` Publication date **is\_repost** `boolean` Whether the post is a repost/retweet/reshare **author\_handle** `string` Author handle / public identifier — pass to Enrich Profile **author\_name** `string` Author display name **author\_bio** `string` Author headline/bio **author\_followers** `integer` Author follower count (when exposed) **author\_verified** `boolean` Whether the author is verified **like\_count** `integer` Likes (Twitter/LinkedIn) or upvotes (Reddit) **comment\_count** `integer` Number of comments/replies **repost\_count** `integer` Reposts/retweets/reshares **view\_count** `integer` Views (when exposed) **subreddit** `string` Reddit only — the subreddit **lang, quote\_count, is\_reply** `mixed` Twitter only — post language, number of quotes, and whether the post is a reply **author\_profile\_url, author\_profile\_picture, posted\_days\_ago, share\_audience** `mixed` LinkedIn only — author profile URL and picture, days since publication, and post audience (e.g. `PUBLIC`) **reactions** `array` Present when `include` contains `reactions`. Engagers who reacted, each with `reaction_type` and an `author` (name, headline, profile URL). **comments** `array` Present when `include` contains `comments`. Commenters, each with the comment `text`, `created_at` and an `author`. *** ```bash Twitter theme={null} curl -X POST https://api.dataforb2b.ai/search/posts \ -H "api_key: YOUR_api_key" \ -H "Content-Type: application/json" \ -d '{ "platform": "twitter", "keyword": "(\"anyone recommend\" OR \"looking for\") CRM", "date_posted": "past_week", "count": 25 }' ``` ```bash Reddit theme={null} curl -X POST https://api.dataforb2b.ai/search/posts \ -H "api_key: YOUR_api_key" \ -H "Content-Type: application/json" \ -d '{ "platform": "reddit", "keyword": "CRM recommendation", "subreddit": "SaaS", "sort_by": "relevance", "count": 25 }' ``` ```bash LinkedIn theme={null} curl -X POST https://api.dataforb2b.ai/search/posts \ -H "api_key: YOUR_api_key" \ -H "Content-Type: application/json" \ -d '{ "platform": "linkedin", "keyword": "CRM", "author_company": "Salesforce", "date_posted": "past_week", "count": 25 }' ``` ```bash With engagers theme={null} curl -X POST https://api.dataforb2b.ai/search/posts \ -H "api_key: YOUR_api_key" \ -H "Content-Type: application/json" \ -d '{ "platform": "linkedin", "keyword": "hiring SDR", "include": ["reactions", "comments"], "engagement_count": 25, "count": 10 }' ``` ```bash Single post theme={null} curl -X POST https://api.dataforb2b.ai/search/posts \ -H "api_key: YOUR_api_key" \ -H "Content-Type: application/json" \ -d '{ "post_url": "https://www.linkedin.com/posts/janedoe_activity-123456789", "include": ["reactions", "comments"], "engagement_count": 50 }' ``` ```json Response theme={null} { "total": 25, "offset": 0, "count": 1, "has_next": true, "credits_used": 1, "results": [ { "post_id": "1811640448000000000", "platform": "twitter", "url": "https://x.com/janedoe/status/1811640448000000000", "text": "anyone got a CRM recommendation that does round-robin without the enterprise upsell?", "created_at": "2026-07-10T14:22:03Z", "is_repost": false, "author_handle": "janedoe", "author_name": "Jane Doe", "author_bio": "Head of RevOps @ Acme", "author_followers": 4200, "author_verified": false, "like_count": 8, "comment_count": 3, "repost_count": 0, "view_count": 900 } ] } ``` # Typeahead Source: https://docs.dataforb2b.ai/api-reference/typeahead GET /typeahead Unified autocomplete endpoint for all search filter values ## Overview A single endpoint that powers autocomplete for every kind of value used in the people and company search filters — companies, industries, categories, locations, schools, job titles, skills, investors, and more. Pass `type=` to control what is searched. Results come back ordered by popularity, with prefix matches promoted to the top. *** ## Query Parameters **type** `string` *required* The category to autocomplete. One of: * `company` — company names (returns `org_id`, name, logo) * `people_industry` — industries on profiles (capitalized, e.g. "Computer Software") * `company_industry` — industries on companies (lowercase, e.g. "software development") * `category` — business categories (lowercase, e.g. "software", "fintech") * `location` — full location strings on profiles (e.g. "San Francisco Bay Area") * `city` — cities on companies * `region` — regions/states on companies * `school` — schools and universities from education history * `title` — job titles * `skill` — profile skills * `investor` — investor names from company funding rounds **q** `string` *required* Search query. Must be 1-100 characters. **limit** `integer` (default: 20) Max results, between 1 and 20. *** ## Pricing Each returned result costs **0.01 credit**, i.e. 0.1 credit per 10 results. Requests that return zero results are free. The amount debited for the call is returned in the response as `credits_used`. > [!NOTE] > > Typeahead can be made **free** for your account on a per-company basis. Reach > out to [dev@dataforb2b.ai](mailto:dev@dataforb2b.ai) if you want it enabled > for your organization. *** ## Response **type** `string` Echoes back the `type` parameter. **count** `integer` Number of results returned. **credits\_used** `float` Credits debited for this request (`count` × 0.01). **results** `array` Matching values, ordered with prefix matches first. **result item properties** **value** `string` The canonical value to use directly as a filter input on `/search/people` or `/search/companies`. **popularity** `string | null` Relative popularity bucket: `<1k`, `1k-10k`, `10k-100k`, or `100k+`. Null for `type=company`. **metadata** `object | null` Extra fields for some types. Currently only populated for `type=company`: * `org_id` — encoded company id (`org_xxx`) * `logo_url` — company logo URL (may be null) *** ```bash cURL theme={null} curl -G "https://api.dataforb2b.ai/typeahead" \ -H "api_key: YOUR_API_KEY" \ --data-urlencode "type=skill" \ --data-urlencode "q=python" \ --data-urlencode "limit=5" ``` ```python Python theme={null} import requests resp = requests.get( "https://api.dataforb2b.ai/typeahead", headers={"api_key": "YOUR_API_KEY"}, params={"type": "skill", "q": "python", "limit": 5}, ) print(resp.json()) ``` ```javascript JavaScript theme={null} const params = new URLSearchParams({ type: "skill", q: "python", limit: 5 }); const resp = await fetch(`https://api.dataforb2b.ai/typeahead?${params}`, { headers: { api_key: "YOUR_API_KEY" }, }); console.log(await resp.json()); ``` ```json type=company theme={null} { "type": "company", "count": 2, "credits_used": 0.02, "results": [ { "value": "Stripe", "popularity": null, "metadata": { "org_id": "org_0lox54iG5IEZSb71mZWLR8z9CVPs8v1Lj8oQ", "logo_url": "https://media.licdn.com/dms/image/..." } }, { "value": "Recko | A Stripe company", "popularity": null, "metadata": { "org_id": "org_0lox54iG5IEZSb71mZWLR8z9CVKfPiCAFeQc", "logo_url": null } } ] } ``` ```json type=skill theme={null} { "type": "skill", "count": 3, "credits_used": 0.03, "results": [ { "value": "Python", "popularity": "100k+", "metadata": null }, { "value": "Python (Programming Language)", "popularity": "100k+", "metadata": null }, { "value": "Python Scripting", "popularity": "1k-10k", "metadata": null } ] } ``` ```json type=city theme={null} { "type": "city", "count": 3, "credits_used": 0.03, "results": [ { "value": "London", "popularity": "100k+", "metadata": null }, { "value": "Londonderry", "popularity": "<1k", "metadata": null }, { "value": "London, United Kingdom","popularity": "<1k", "metadata": null } ] } ``` ```json type=people_industry theme={null} { "type": "people_industry", "count": 1, "credits_used": 0.01, "results": [ { "value": "Computer Software", "popularity": "100k+", "metadata": null } ] } ``` ```json type=investor theme={null} { "type": "investor", "count": 2, "credits_used": 0.02, "results": [ { "value": "y combinator", "popularity": "1k-10k", "metadata": null }, { "value": "y combinator continuity fund","popularity": "<1k", "metadata": null } ] } ``` # Authentication Source: https://docs.dataforb2b.ai/development/authentication How to authenticate your API requests ## API Key Authentication All API requests must include your API key in the `api_key` header. ```bash theme={null} api_key: YOUR_api_key ``` ## Getting your API Key 1. Sign up or log in at [app.dataforb2b.ai](https://app.dataforb2b.ai) 2. Navigate to **Settings** > **API Keys** 3. Click **Generate new key** 4. Copy and securely store your API key > [!WARNING] > > Your API key grants access to your account and credits. Keep it secure and never share it publicly or commit it to version control. ## Example Request ```bash cURL theme={null} curl -X POST https://api.dataforb2b.ai/search/people \ -H "api_key: dfb2b_abc123..." \ -H "Content-Type: application/json" \ -d '{"filters": {"op": "and", "conditions": [{"column": "current_title", "type": "like", "value": "Engineer"}]}, "count": 10}' ``` ```python Python theme={null} import requests headers = { "api_key": "dfb2b_abc123...", "Content-Type": "application/json" } response = requests.post( "https://api.dataforb2b.ai/search/people", headers=headers, json={"filters": {"op": "and", "conditions": [{"column": "current_title", "type": "like", "value": "Engineer"}]}, "count": 10} ) ``` ```javascript JavaScript theme={null} const headers = { 'api_key': 'dfb2b_abc123...', 'Content-Type': 'application/json' }; const response = await fetch('https://api.dataforb2b.ai/search/people', { method: 'POST', headers, body: JSON.stringify({"filters": {"op": "and", "conditions": [{"column": "current_title", "type": "like", "value": "Engineer"}]}, "count": 10}) }); ``` ## Authentication Errors | Status Code | Error | Description | | - | - | - | | 401 | `Missing API key` / `Invalid API key` | Missing or invalid API key | | 403 | `Forbidden` | API key doesn't have permission for this resource | # Error Codes Source: https://docs.dataforb2b.ai/development/errors API error codes and response formats ## Status Codes | Code | Message | | - | - | | 400 | Invalid URL / Invalid filter value / Invalid parameter | | 401 | Missing API key / Invalid API key | | 402 | Insufficient credits | | 403 | Member restricted / Forbidden | | 404 | Not found / Profile not found / Company not found | | 422 | Request validation error (wrong type, out-of-range or unknown value, missing field) | | 429 | Rate limit exceeded | | 500 | Internal error | | 503 | Service temporarily unavailable. Please contact support. | ### Search-Specific Errors (400) | Code | Message | Cause | | - | - | - | | 400 | Unknown column '...' | The filter column does not exist for this endpoint | | 400 | Operator '...' is not allowed on column '...' | The operator is not supported by that column | | 400 | Operator 'in' on '...' requires a non-empty list. | `in` was given a string instead of a JSON array | | 400 | Invalid category / Platform '...' is not supported | Unknown `category` or `platform` value | | 400 | Invalid encoded company ID / Invalid company identifier | Malformed `company_identifier` on [Enrich Company](/api-reference/enrich-company) | *** ## Response Formats ### Standard Error (401, 403, 429, 500, 503) ```json theme={null} { "detail": "Invalid API key" } ``` ### Insufficient Credits (402) ```json theme={null} { "detail": { "error": "Insufficient credits", "available_credits": 12, "required_credits": 50, "cost_per_result": 1 } } ``` ### Invalid Parameters (400) ```json theme={null} { "detail": "Unknown column 'country'. Available columns: certification, certification_authority, current_company, ..." } ``` ### Validation Error (422) Returned when the request body or query string does not match the expected schema (wrong type, value out of range, unknown enum value, invalid filter operator). `detail` is an array with one entry per problem: ```json theme={null} { "detail": [ { "type": "less_than_equal", "loc": ["body", "count"], "msg": "Input should be less than or equal to 100", "input": 101 } ] } ``` # Rate Limits Source: https://docs.dataforb2b.ai/development/rate-limits API rate limits per endpoint category ## Default Rate Limits | Endpoint Category | Rate Limit | | - | - | | Search (people, company, agent search) | 10 req/s, 600 req/min | | Enrichment (profile, company) | 30 req/s, 1 800 req/min | When you exceed a rate limit, the API will return a `429 Too Many Requests` response. Wait before retrying. ## Need Higher Limits? Rate limits can be increased based on your needs. Contact us at [contact@dataforb2b.ai](mailto:contact@dataforb2b.ai) to discuss your use case. # Introduction Source: https://docs.dataforb2b.ai/get-started/introduction Welcome to the DataForB2B API documentation ## Overview DataForB2B is an API specialized in real-time web data retrieval, focused on company and people data. All our data is live data, collected and updated in real-time to ensure accuracy and freshness. ## What you can do > [card] Search Profiles > > Find professionals using 50+ filters including company, title, skills, location, and more > [card] Advanced Filters > > Combine filters with AND/OR logic for precise targeting > [card] Rich Data > > Access experience history, education, skills, certifications, and social metrics > [card] Real-time Data > > Get up-to-date profile information enriched regularly ## Quick links > [card] [Quickstart](/get-started/quickstart) > > Make your first API call in minutes > [card] [Search People](/api-reference/search-people) > > Explore the Search API reference > [card] [Authentication](/development/authentication) > > Learn how to authenticate requests ## Base URL All API requests should be made to: ``` https://api.dataforb2b.ai ``` ## Need help? Contact our support team at [support@dataforb2b.ai](mailto:support@dataforb2b.ai). # MCP Server Source: https://docs.dataforb2b.ai/get-started/mcp Connect Claude, Cursor, VS Code, and other AI assistants to DataForB2B # DataForB2B MCP Connect your AI assistant to DataForB2B to search people and companies, enrich profiles with verified contact data, and monitor hiring and intent signals, directly from your chat or IDE. **MCP Server URL:** ``` https://mcp.dataforb2b.ai/mcp ``` ## Installation > [tab] Claude (web & desktop) > > 1. Open **Settings > Connectors** > 2. Click **Add custom connector** > 3. Enter `https://mcp.dataforb2b.ai/mcp` and click **Add** > 4. Click **Connect**, then sign in to your DataForB2B account and approve access > > On older Claude Desktop versions without the Connectors menu, use the config file instead: > > **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json` > > **Windows:** `%APPDATA%\Claude\claude_desktop_config.json` > > ```json theme={null} > { > "mcpServers": { > "dataforb2b": { > "command": "npx", > "args": ["-y", "mcp-remote", "https://mcp.dataforb2b.ai/mcp"] > } > } > } > ``` > [tab] Claude Code > > Run in terminal: > > ```bash theme={null} > claude mcp add --transport http dataforb2b https://mcp.dataforb2b.ai/mcp > ``` > [tab] Cursor > > Add to `~/.cursor/mcp.json`: > > ```json theme={null} > { > "mcpServers": { > "dataforb2b": { > "url": "https://mcp.dataforb2b.ai/mcp" > } > } > } > ``` > [tab] VS Code > > Add to `.vscode/mcp.json`: > > ```json theme={null} > { > "servers": { > "dataforb2b": { > "type": "http", > "url": "https://mcp.dataforb2b.ai/mcp" > } > } > } > ``` > [tab] Windsurf > > Add to `~/.codeium/windsurf/mcp_config.json`: > > ```json theme={null} > { > "mcpServers": { > "dataforb2b": { > "serverUrl": "https://mcp.dataforb2b.ai/mcp" > } > } > } > ``` > [tab] Zed > > Add to your Zed settings: > > ```json theme={null} > { > "context_servers": { > "dataforb2b": { > "url": "https://mcp.dataforb2b.ai/mcp" > } > } > } > ``` > [tab] Other > > For other MCP clients that support remote MCP: > > ```json theme={null} > { > "mcpServers": { > "dataforb2b": { > "url": "https://mcp.dataforb2b.ai/mcp" > } > } > } > ``` > > If your client doesn't support remote MCP servers directly: > > ```json theme={null} > { > "mcpServers": { > "dataforb2b": { > "command": "npx", > "args": ["-y", "mcp-remote", "https://mcp.dataforb2b.ai/mcp"] > } > } > } > ``` ## Authentication DataForB2B MCP uses **OAuth 2.0**. When you first connect, you'll be redirected to log in to your DataForB2B account and authorize the connection. 1. Sign up at [app.dataforb2b.ai](https://app.dataforb2b.ai) if you don't have an account 2. Connect the MCP server in your AI assistant 3. Log in to your DataForB2B account and authorize access when prompted No API key needed: just sign in and approve the connection. ## Available Tools All tools are read-only. | Tool | Description | | - | - | | `search_people` | Search professional profiles with structured filters: role, company, industry, geography, skills, languages, funding and more | | `search_company` | Search companies with structured filters: industry, niche category, size, funding stage, investors, growth | | `enrich_profile` | Get full profile data (experience, education, skills) plus work email, personal email or GitHub profile | | `enrich_profiles` | Same as `enrich_profile`, for up to 100 profiles in a single call | | `enrich_company` | Get full company data: headquarters, employee counts, funding rounds, offices | | `search_posts` | Search public social posts by keyword and capture each post's engagers as leads | | `search_jobs` | Search job postings by keyword, location and filters, for hiring signals | | `typeahead` | Resolve the exact stored value for a categorical filter (industry, title, skill, school, investor, location) | ## Usage Examples > [accordion] Sales prospecting > > ``` > Find CTOs and VPs of Engineering at SaaS companies > with 50-200 employees that raised Series A or Series B in the US > ``` > > Then: > > ``` > Enrich these profiles with verified work emails > ``` > [accordion] Recruiting > > ``` > Software engineers in SF with 5+ years of experience > who know Python and have worked at companies with 200+ employees > ``` > > Then: > > ``` > Enrich the top 20 with their full profiles and skills > ``` > [accordion] Investor-backed targeting > > ``` > CTOs at companies backed by Sequoia > ``` > > ``` > Software engineers at YC companies > ``` > [accordion] Intent signals > > ``` > Find recent posts about AI sales tools > and list the people who engaged with them > ``` > > Then: > > ``` > Enrich the engagers who are founders or heads of sales > ``` > [accordion] Hiring signals > > ``` > Which mid-size SaaS companies in the US > are currently hiring sales reps? > ``` > > Then: > > ``` > Find the VP Sales or CRO at each of these companies > ``` > [accordion] Company search > > ``` > AI startups in France with 10-50 employees > that have received seed or Series A funding > ``` > > Then: > > ``` > Get the founders of each with their work emails > ``` ## Troubleshooting > [accordion] Authorization not working > > Make sure you have a DataForB2B account. Sign up at [app.dataforb2b.ai](https://app.dataforb2b.ai) and try connecting again. > [accordion] Tools not appearing > > Restart your MCP client after updating the config file. Some clients require a full restart to detect new MCP servers. > [accordion] Claude Desktop not connecting > > Claude Desktop requires the `mcp-remote` wrapper. Make sure you're using the `npx` config: > > ```json theme={null} > { > "command": "npx", > "args": ["-y", "mcp-remote", "https://mcp.dataforb2b.ai/mcp"] > } > ``` ## Need help? Contact us at [support@dataforb2b.ai](mailto:support@dataforb2b.ai). # Quickstart Source: https://docs.dataforb2b.ai/get-started/quickstart Get up and running with the DataForB2B API in minutes ## 1. Get your API Key Sign up at [app.dataforb2b.ai](https://app.dataforb2b.ai) and retrieve your API key from the dashboard. ## 2. Make your first request ```bash cURL theme={null} curl -X POST https://api.dataforb2b.ai/search/people \ -H "api_key: YOUR_api_key" \ -H "Content-Type: application/json" \ -d '{ "filters": { "op": "and", "conditions": [ {"column": "current_title", "type": "like", "value": "Engineer"} ] }, "count": 5 }' ``` ```python Python theme={null} import requests response = requests.post( "https://api.dataforb2b.ai/search/people", headers={ "api_key": "YOUR_api_key", "Content-Type": "application/json" }, json={ "filters": { "op": "and", "conditions": [ {"column": "current_title", "type": "like", "value": "Engineer"} ] }, "count": 5 } ) print(response.json()) ``` ```javascript JavaScript theme={null} const response = await fetch('https://api.dataforb2b.ai/search/people', { method: 'POST', headers: { 'api_key': 'YOUR_api_key', 'Content-Type': 'application/json' }, body: JSON.stringify({ filters: { op: 'and', conditions: [ { column: 'current_title', type: 'like', value: 'Engineer' } ] }, count: 5 }) }); const data = await response.json(); console.log(data); ``` ## 3. Explore the response ```json theme={null} { "total": 10000, "total_is_capped": true, "offset": 0, "count": 5, "has_next_page": true, "credits_used": 3.75, "results": [ { "id": "prof_PVURNGJihYludzaOwFCAwNajijSHFi6H0L9R", "first_name": "John", "last_name": "Doe", "headline": "Senior Software Engineer at Google", "location": "San Francisco Bay Area", "country": "US", "links": {"linkedin": "https://www.linkedin.com/in/john-doe", "twitter": null, "github": null}, "experience": [ { "company": {"id": "org_0lox54iG5IEZSb71mZWLR8z9CVPuIFEZMZre", "name": "Google"}, "title": "Senior Software Engineer", "start_date": "2021-09", "end_date": null, "is_current": true } ], "education": [], "skills": ["Python", "Go"], "metrics": {"followers": 5420, "skills_count": 2} } ] } ``` See [Search People](/api-reference/search-people) for the full response structure. ## Next steps > [card] [Search People](/api-reference/search-people) > > Learn about all available filters and options > [card] [Authentication](/development/authentication) > > Understand how authentication works