Field normalization
Use these canonical field names and accepted values when filtering people and employer snapshots in the v2 APIs.
How normalization works
moltsetz stores B2B records in Elasticsearch and returns a normalized JSON shape from each endpoint. Exact list filters must use values from the current index, including capitalization and punctuation, especially for country codes, regions, seniority, company type, and departments.
- Use include/exclude objects for keyword-style filters such as
company.domain,company.name, andpeople.job_title. - Keep
max_resultsbetween1and100. Cursors are opaque and should be sent back unchanged. - When a narrow filter returns no results, run a broader request first and copy returned normalized values into the next request.
Accepted value lists
These lists are generated from the current production Elasticsearch indexes and show values users can put into exact normalized fields.
Find People filters
These fields are supported by Find People. Employer filters use the current company snapshot stored on each contact record.
Employer filters
| Request field | Normalized format | Response field | Examples |
|---|---|---|---|
company.domain | Bare employer hostname, or include/exclude arrays. | company.domain | openai.com, google.com |
company.name | Employer name terms or phrases, or include/exclude arrays. | company.name | OpenAI, Microsoft |
company.keywords | Alias-style employer name keyword filter. | company.name | openai, salesforce |
company.country_code | Uppercase ISO 3166-1 alpha-2 country code. | company country snapshot | US, GB, IN |
company.continent | Dataset continent value. | company continent snapshot | North America, Europe |
company.type | Exact source company type label. | company.type | Privately Held, Public Company |
Person filters
| Request field | Normalized format | Response field | Examples |
|---|---|---|---|
people.job_title | Current title terms or phrases, or include/exclude arrays. | job_title | CEO, VP Marketing, Head of Growth |
people.title | Alias for people.job_title. | job_title | Founder, Product Manager |
people.job_function | Exact source department or function label. | job_function | General Business & Management |
people.department | Alias for people.job_function. | job_function | Sales & Business Development |
people.job_level | Exact source seniority label. | job_level | Staff, Manager, Director, VP, C-Team, Other |
people.seniority | Alias for people.job_level. | job_level | C-Team, VP |
people.country_code | Uppercase ISO 3166-1 alpha-2 country code. | location.country_code | US, GB, IN |
people.continent | Dataset continent value. | location.continent | North America, Asia |
people.sales_region | Dataset sales region code. | Filter-only | NORAM, LATAM, EMEA, APAC |
people.min_connections_count | Positive integer lower bound. | connections_count | 500 |
Returned people fields
People search returns normalized person fields plus a nested company object when employer data is available.
| Field | Type | Description |
|---|---|---|
first_name | string | null | Given name. |
last_name | string | null | Family name when present in the source data. |
full_name | string | null | Person display name. |
headline | string | null | LinkedIn headline. |
job_title | string | null | Current title. |
job_function | string | null | Department or functional area. |
job_level | string | null | Seniority level. |
linkedin_url | string | null | Canonical LinkedIn profile URL. |
connections_count | integer | null | LinkedIn connection count when available. |
profile_picture_url | string | null | Profile image URL when available. |
location.city | string | null | Person city. |
location.state_code | string | null | Person state or subdivision code. |
location.country_code | string | null | Person country code. |
location.continent | string | null | Source continent value. |
email | string | null | Work email when available. |
phone | string | null | Mobile or direct phone when available. |
company | object | null | Nested normalized company object using the company fields above. |
Returned employer snapshot fields
These fields can appear inside results[].company from Find People.
| Field | Type | Description |
|---|---|---|
company.linkedin_url | string | null | Current employer LinkedIn company URL. |
company.name | string | null | Current employer display name. |
company.headline | string | null | Current employer headline when available. |
company.about | string | null | Current employer description when available. |
company.industry | string | null | Current employer industry label returned from the contact index. |
company.type | string | null | Current employer entity type. |
company.size | string | number | null | Current employer size bucket when available. |
company.employees_on_linkedin | integer | null | Employee count represented on LinkedIn. |
company.founded_year | integer | null | Year the employer was founded. |
company.domain | string | null | Current employer primary domain. |
company.website | string | null | Current employer website URL. |
company.logo | string | null | Current employer logo image URL. |
Examples
People search request
curl -X POST "https://moltsetz.com/v2/search/people" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"company": {
"domain": {
"include": [
"openai.com"
]
}
},
"people": {
"job_title": {
"include": [
"CEO"
]
}
},
"max_results": 2
}'Observed normalized fields from a live response:
{
"job_function": "General Business & Management",
"job_level": "C-Team",
"location": {
"country_code": "US"
},
"company": {
"name": "OpenAI",
"domain": "openai.com",
"about": "AI research and deployment company.",
"industry": "Software Development"
}
}Unsupported Find People filters
Do not use these fields as Find People filters until the API maps them in the contacts query.
company.industry,company.employee_range, andcompany.sales_region.company.hq.*, revenue, funding, NAICS, SIC, traffic, ad spend, technologies, and open roles.people.education,people.skills,people.certifications, andpeople.languages.
Troubleshooting
| Problem | What to check |
|---|---|
| No results for a domain filter | Use the bare hostname in company.domain, then retry without protocol, path, query, or www. |
| No results for role filters | Start with a broader keyword, inspect returned job_title, then reuse the returned value. |
| Country or region filters miss records | Use uppercase country codes such as US and exact sales regions such as NORAM. |
| Unexpected 422 validation error | Confirm at least one supported filter is present and max_results is between 1 and 100. |