This is the complete filter reference for SQL search. Put these predicates in sql_filter. The optional query parameter ranks the results; omit it for a filters-only search.
The SQL schema is mostly a subset of the returned profile schema. Only fields usable in SQL are listed here, including fields that support presence checks. Some filter-only helpers are also available. Other fields may appear in returned profiles without being available for filtering.
Profile-shaped SQL schema
One indexed document represents one person. SQL exposes grouped experiences like the returned Pearch profile: experiences[] contains company_info and company_roles[]. Company attributes belong to the company group; titles, dates, durations, and role locations belong to company_roles.
{
"summary": "Backend engineer",
"inferred_languages": [{"language": "English"}],
"experiences": [{
"company_info": {"domain": "stripe.com", "num_employees": 1000},
"company_roles": [{"title": "Engineer", "start_date": "2022-01-01", "end_date": null}]
}]
}
Profile shape, indexed valuesField names and nesting follow the response where possible. SQL still operates on indexed values, not the formatted response JSON.
summarymaps to indexed summary text andinferred_languagesto indexed inferred languages. Dates use the documented SQL types. Contact values remain unavailable. A response-only field absent from these tables cannot be filtered.
Company metadata in the current index is copied onto role records. A company-and-role predicate tests the metadata copy attached to that matching role. When those copies disagree, the company metadata displayed in the response can come from a different role. This interface does not normalize conflicting company snapshots or guarantee equality with filtering the final formatted JSON.
Supported SQL
Use a restricted BigQuery-style predicate, not an arbitrary query. A complete top-level SELECT, ORDER BY, joins to external tables, or SQL writes are not accepted. SELECT is permitted inside the supported EXISTS and aggregate forms shown here.
| Operation | Example | Meaning |
|---|---|---|
| Comparisons | total_experience_years >= 5 | At least five years of overall experience. |
| Alternatives | location_country_code IN ('US', 'CA') | Located in the United States or Canada. |
| Inclusive range | total_experience_years BETWEEN 5 AND 10 | Five to ten years of overall experience, including both endpoints. |
| Presence | first_name IS NOT NULL | The person's profile includes a first name. |
| Boolean composition | A AND (B OR C), NOT (A) | Require A and either B or C; or exclude matches for A. A, B, and C stand for conditions. |
| Named place | LOCATION('Athens, Greece', 'GR') | Located in Athens, Greece. |
| Distance radius | LOCATION('New York, United States', 'US', 50, 'km') | Located within 50 km of New York's resolved center. |
| Text or whole-value search | SEARCH(title, 'backend AND engineer') | The person's headline mentions both backend and engineer. |
| Repeated records | EXISTS (SELECT 1 FROM UNNEST(experiences) AS e WHERE ...) | The person has worked at a company matching the conditions replacing .... |
| Role records | CROSS JOIN UNNEST(c.company_roles) AS r after UNNEST(experiences) AS c | Read job titles, dates, and other role details at that company. |
| Nested repeated records | CROSS JOIN UNNEST(c.company_info.funding_rounds) AS fr within a company scope | Read that company's funding rounds. |
| Supported aggregate | SUM(r.duration_years) over a company source and its role source | Total years spent in matching roles. |
| Typed date/time | r.start_date >= DATE '2022-01-01' or r.start_date >= TIMESTAMP '2022-01-01T00:00:00Z' | A role started on or after January 1, 2022. |
Use single-quoted SQL strings, numeric literals for numbers, and TRUE/FALSE for booleans. Escape apostrophes by doubling them: first_name = 'O''Brien'. Use IS NULL and IS NOT NULL for missing values; field = NULL is not a presence test.
Provide one SQL condition in sql_filter. Combine conditions with AND, OR, and parentheses. Unsupported fields and constructs return HTTP 400.
Names
Use first_name, middle_name, and last_name for name filters. Matching ignores case, trims and collapses whitespace, and removes Latin combining accents. For example, Sánchez matches SANCHEZ, and Straße matches strasse. Non-Latin scripts are preserved. Each condition matches the complete name component; a middle name can contain several words. These rules also apply to IN and SEARCH. Returned names retain their original spelling.
Find people named José Sánchez or José De Cózar using name filters without accents:
first_name = 'Jose'
AND last_name IN ('Sanchez', 'De Cozar')Use IS NULL for a missing name; blank name filter values are rejected.
Record presence
Top-level record arrays support IS NOT NULL to require at least one record with searchable data and IS NULL to require none.
Find people with at least one certification:
certifications IS NOT NULLFor certifications, a title or issuer is sufficient; a record containing only a certificate URL is not searchable. To constrain a specific certification, use EXISTS with conditions on its supported fields.
SEARCH: text versus exact values
On fields marked Field text SEARCH, SEARCH matches terms, with stemming unless disabled in the table. Tokenized fields do not support exact = comparisons. On exact fields, including canonical string arrays, SEARCH matches whole indexed values. Canonical labels are not automatically resolved from arbitrary text.
Find backend engineers or developers with Python or Go skills and at least one skill listed on their profile:
SEARCH(title, 'backend AND (engineer OR developer)')
AND SEARCH(canonical_skills, 'Python OR Go')
AND skills IS NOT NULLUse AND, OR, and parentheses inside a SEARCH string. To negate a search, write SQL NOT SEARCH(...); do not put SQL conditions in the search string. Quoting a multiword term groups it, but tokenized search does not promise positional phrase matching. Use an exact canonical field when a whole-value match matters. Do not assume LIKE, wildcards, regular expressions, or arbitrary SQL functions are supported.
Some tokenized fields contribute to the document-wide _text index without having a field-specific text index. Those are marked Document text only. Field-specific SEARCH on summary, skills, an education's major, or a company's technologies is unsupported. Use query, a corresponding canonical field, or document-wide text search:
Find people whose profile text mentions both Python and distributed systems:
SEARCH(_text, 'Python AND distributed systems')_text is a synthetic document-wide text field, not a returned profile property. A match can come from any contributing field, including another experience or education record. It does not establish that a term appears in a particular role, course, major, or company. Do not use it as a substitute for a same-record constraint. Presence tests on an indexed tokenized field are still supported.
Keep related conditions in one scope
Find people currently employed at Stripe as engineers:
EXISTS (
SELECT 1
FROM UNNEST(experiences) AS c
CROSS JOIN UNNEST(c.company_roles) AS r
WHERE r.end_date IS NULL
AND c.company_info.domain = 'stripe.com'
AND SEARCH(r.title, 'engineer')
)r.end_date IS NULL selects roles marked as current. Keeping the company and role conditions in the same EXISTS ensures that the engineering job is at Stripe. Separate EXISTS clauses could match an engineering job at another company and a different job at Stripe. Use the appropriate source alias for each field inside a subquery.
Translation boundaries
Use at most one company_roles alias per company alias, in the same SELECT scope, through CROSS JOIN UNNEST(c.company_roles) AS r. A nested EXISTS or aggregate over an outer company's company_roles, multiple role aliases for that company, and offsets are rejected with HTTP 400. In particular, asking for two different roles at the same company is not supported. Splitting that requirement into independent EXISTS clauses would change its meaning.
Aggregates over company groups, such as COUNT(*) directly over UNNEST(experiences), are rejected because the internal records count roles rather than distinct companies. Aggregate role records explicitly instead. Company-only positive and negative EXISTS filters are supported. NOT EXISTS over a company/role join excludes matching roles anywhere in the profile; it does not express a nested absence of roles within a selected company.
Flat role paths such as e.title after UNNEST(experiences) AS e are rejected. Use r.title after unnesting e.company_roles. Unsupported mappings are never approximated or dropped.
Exclude people who have ever worked at the company with domain example.com:
NOT EXISTS (
SELECT 1 FROM UNNEST(experiences) AS e
WHERE e.company_info.domain = 'example.com'
)Testing one role with e.company_info.domain != 'example.com' does not exclude a matching company elsewhere in the person's history.
Experience durations and company attributes
Find people with five to ten years of combined experience as a software engineer or software developer:
(
SELECT SUM(r.duration_years)
FROM UNNEST(experiences) AS c
CROSS JOIN UNNEST(c.company_roles) AS r
WHERE SEARCH(r.canonical_title, 'Software Engineer OR Software Developer')
) BETWEEN 5 AND 10This sums the indexed durations of matching roles. Separate overlapping roles can contribute overlapping time. For overall experience, use total_experience_years. SUM requires a numeric field with scalar evaluation support, such as duration_years; it is not available for every numeric field. Null numeric values do not contribute.
Find people currently working at a SaaS company that is hiring and has 50 to 500 employees:
EXISTS (
SELECT 1 FROM UNNEST(experiences) AS c
CROSS JOIN UNNEST(c.company_roles) AS r
WHERE r.end_date IS NULL
AND c.company_info.is_saas = TRUE
AND c.company_info.is_hiring = TRUE
AND c.company_info.num_employees BETWEEN 50 AND 500
)Geography
Find people located in California, United States:
location_state_code = 'US-CA'Use two-letter ISO country codes and country-prefixed subdivision codes for exact country and state filters. A subdivision code such as US-CA already identifies its country.
Named places and distance
Use LOCATION('full place name', 'ISO country code') for a city, state, or named area. For example, LOCATION('Athens, Greece', 'GR') filters for Athens in Greece. Preserve place qualifiers and use an uppercase two-letter country code; use NULL when the country is unspecified.
Find people located on the US West Coast:
LOCATION('West Coast, US', 'US')Add a positive radius and a unit of 'km' or 'mi' for distance from the named place's center. For example, LOCATION('New York, United States', 'US', 50, 'km') searches within 50 km of New York.
Find people within 25 miles of the resolved center of the US West Coast region:
LOCATION('West Coast, US', 'US', 25, 'mi')Combine place predicates with AND, OR, and NOT, alongside other profile conditions. Each place keeps its own country and radius. LOCATION applies to the person's location and belongs at the profile level, outside subqueries. Unknown places return HTTP 400.
Time zones
Use location_timezone = 'label' or location_timezone IN ('label', ...) for these supported time zones:
Eastern Time (US and Canada)Central Time (US and Canada)Mountain Time (US and Canada)Pacific Time (US and Canada)Atlantic Time (Canada)Newfoundland TimeAlaska TimeHawaii TimeIndia Standard TimeChina Standard TimeJapan Standard TimeKorea Standard TimeSingapore Time
Find people in either Pacific Time (US and Canada) or India Standard Time:
location_timezone IN ('Pacific Time (US and Canada)', 'India Standard Time')AND, OR, and NOT can combine time-zone conditions. Unsupported labels or operations return HTTP 400.
Coordinates and regions
You can also filter numeric coordinates or use SEARCH(location_regions, 'Europe OR APAC') to match either indexed region label.
Find people inside the rectangle bounded by latitudes 37.0–38.5 and longitudes -123.0–-121.0:
location_coordinates.lat BETWEEN 37.0 AND 38.5
AND location_coordinates.lng BETWEEN -123.0 AND -121.0Coordinate bounds define a rectangular area. Use the four-argument LOCATION form for a distance radius.
Advanced scalar expressions
The restricted dialect also supports CAST and SAFE_CAST to INT64, FLOAT64, STRING, BOOL, and TIMESTAMP. Casts of constants are evaluated before index lookup. Casts of field values require scalar-expression support on the field. CAST fails on invalid values; SAFE_CAST produces a null value, which does not satisfy a comparison.
Supported correlated MIN/SUM, field-to-field comparisons, IFNULL/COALESCE, DATE_ADD/DATE_SUB, TIMESTAMP_ADD/TIMESTAMP_SUB, EXTRACT(YEAR FROM ...), and numeric subtraction require scalar-expression support on every field read during that evaluation.
Find people whose job ended on or after their employer went public:
EXISTS (
SELECT 1 FROM UNNEST(experiences) AS c
CROSS JOIN UNNEST(c.company_roles) AS r
WHERE r.end_date >= c.company_info.ipo_date
)The tables distinguish scalar-capable fields from fields that only support ordinary indexed lookups. Unsupported expressions are rejected; SQL is not executed against arbitrary profile JSON.
Complete field reference
Reference date: 2026-10-30. Every field supported by the endpoint's public SQL schema is listed below. Fields are optional; an absent value does not establish a negative fact about a person.
Read the tables
string[]denotes an array of scalar strings. UseSEARCH(field, 'value')for membership or alternatives.- Exact value means whole-value equality,
IN, or exact-valueSEARCH. Field text SEARCH means term matching on this field; exact=comparisons are unsupported for tokenized fields. - Document text only means the field contributes to
SEARCH(_text, ...), but field-specificSEARCH(field, ...)and exact comparisons are unsupported. Indexed presence tests remain available. - Numeric range, Date/time range, and Boolean support compatible comparisons and presence tests.
- Presence only supports
IS NULLandIS NOT NULL. Scalar aggregate only means a value can be read by supported scalar aggregate evaluation, not used as a direct indexed range predicate. - Scalar expressions marks fields with the index's scalar postfilter capability, required for supported field-to-field comparisons, casts, date arithmetic, and aggregates. It does not make arbitrary SQL functions available.
- Filter-only fields can be used in filters but need not appear in returned profiles. Other fields can still be renamed, grouped, omitted, or redacted by the response formatter.
- Typed
timestampfields acceptDATE '2025-01-01'orTIMESTAMP '2025-01-01T00:00:00Z'. A field typednumberremains numeric even when its name containsdateortimestamp; do not assume the types are interchangeable.
Profile fields
| SQL path | Type and filtering | Meaning |
|---|---|---|
| has_ | boolean Boolean; scalar expressions | Indexed email-availability flag. Filtering it does not reveal email addresses. Values: TRUE, FALSE. |
| has_ | boolean Boolean; scalar expressions | Indexed phone-availability flag. Filtering it does not reveal phone numbers. Values: TRUE, FALSE. |
| is_ | boolean Boolean | Indexed student-status flag. Values: TRUE, FALSE. |
| canonical_ | string[] Exact value | Normalized canonical skill labels. |
| canonical_ | string[] Exact value | Canonical title labels for the profile headline. |
| connections_ | number Numeric range | Indexed LinkedIn connection count. |
| estimated_ | number Numeric range | Estimated person age in years; an inferred value that can be missing. |
| first_ | string Exact value | Given name. Matching normalizes case, whitespace, and Latin accents. |
| followers_ | number Numeric range | Indexed LinkedIn follower count. |
| gender | string Exact value; scalar expressions | Indexed gender label when available. Values: male, female. |
| is_ | number Numeric range; scalar expressions | Numeric decision-maker indicator or score; this is not a boolean field. Values: 0, 1. |
| last_ | number Numeric range | Numeric timestamp of the most recent indexed LinkedIn activity. |
| last_ | string Exact value | Family name. Matching normalizes case, whitespace, and Latin accents. |
| linkedin_ | string Exact value | LinkedIn profile identifier, corresponding to result docid. |
| location | string Presence only; IS NULL or IS NOT NULL | Human-readable profile location; use LOCATION for named-place filters. |
| location_ | string Exact value; scalar expressions | Indexed continent label. Values: Africa, Antarctica, Asia, Europe, North America, Oceania, South America. |
| location_ | number Numeric range | Profile latitude in decimal degrees. |
| location_ | number Numeric range | Profile longitude in decimal degrees. |
| location_ | string Exact value; scalar expressions | Two-letter ISO country code, such as US or GB. |
| location_ | string Exact value; scalar expressions | Country-prefixed subdivision code, such as US-CA. Filter-only; not stored as a profile value. |
| location_ | string[] Exact value; scalar expressions | Indexed geographic region labels, which can include overlapping regions. Values: AMER, APAC, Africa, Americas, Antarctica, Asia, Australia and New Zealand, Caribbean, Central America, Central Asia, Channel Islands, EMEA, EU, Eastern Africa, Eastern Asia, Eastern Europe, Europe, Latin America and the Caribbean, Melanesia, Micronesia, Middle Africa, North America, Northern Africa, Northern America, Northern Europe, Oceania, Polynesia, South America, South-eastern Asia, Southern Africa, Southern Asia, Southern Europe, Sub-Saharan Africa, Western Africa, Western Asia, Western Europe. |
| middle_ | string Exact value | Middle name. Matching normalizes case, whitespace, and Latin accents. |
| posted_ | number Numeric range | Numeric timestamp of the most recent indexed original LinkedIn post. |
| profile_ | number Numeric range | Numeric index representation of the LinkedIn account creation date. |
| shared_ | number Numeric range | Numeric timestamp of the most recent indexed LinkedIn share. |
| liked_ | number Numeric range | Numeric timestamp of the most recent indexed LinkedIn like. |
| title | string Field text SEARCH | Profile headline or title, searched as text. Stemming enabled. |
| total_ | number Numeric range | Indexed overall professional experience in years. |
| skills | string[] Document text only; presence tests | Free-text skills listed on the profile. IS NOT NULL requires at least one skill; IS NULL matches profiles without skill values. Stemming enabled. |
| location_ | string Virtual time zone; = or IN | Profile location time zone; use a supported label with = or IN. Values: Eastern Time (US and Canada), Central Time (US and Canada), Mountain Time (US and Canada), Pacific Time (US and Canada), Atlantic Time (Canada), Newfoundland Time, Alaska Time, Hawaii Time, India Standard Time, China Standard Time, Japan Standard Time, Korea Standard Time, Singapore Time. |
| summary | string Document text only; presence tests | Indexed professional summary text. Stemming enabled. |
alternativeSlugs records
alternativeSlugs recordsEach row belongs to one alternativeSlugs element. Apply related conditions inside the same EXISTS scope.
Find people whose LinkedIn profile is also known by the alias example-slug:
EXISTS (SELECT 1 FROM UNNEST(alternativeSlugs) AS s WHERE s.element = 'example-slug')| SQL path | Type and filtering | Meaning |
|---|---|---|
| alternativeSlugs. | string Exact value | One alternative LinkedIn slug associated with the profile. |
activities records
activities recordsEach row belongs to one activities element. Apply related conditions inside the same EXISTS scope.
Find people whose LinkedIn activity mentions machine learning on or after January 1, 2025:
EXISTS (SELECT 1 FROM UNNEST(activities) AS a WHERE SEARCH(a.title, 'machine learning') AND a.activity_timestamp >= DATE '2025-01-01')| SQL path | Type and filtering | Meaning |
|---|---|---|
| activities. | string Field text SEARCH | Title text for this record. Stemming enabled. |
| activities. | string Exact value | Activity action. Standard labels: Posted by (authored post), Shared by (repost), Liked by (like). Other source values include personalized strings such as <name> liked this; this is not a closed enum. |
| activities. | timestamp Date/time range; scalar expressions | Typed timestamp for the activity; accepts DATE or TIMESTAMP literals. Filter-only; not stored as a profile value. |
recommendations records
recommendations recordsEach row belongs to one recommendations element. Apply related conditions inside the same EXISTS scope.
Find people with a recommendation mentioning technical leadership:
EXISTS (SELECT 1 FROM UNNEST(recommendations) AS r WHERE SEARCH(r.recommendation, 'technical leadership'))| SQL path | Type and filtering | Meaning |
|---|---|---|
| recommendations. | string Field text SEARCH | Recommendation text. Stemming enabled. |
certifications records
certifications recordsEach row belongs to one certifications element. Apply related conditions inside the same EXISTS scope.
Find people with an AWS certification from Amazon:
EXISTS (SELECT 1 FROM UNNEST(certifications) AS c WHERE SEARCH(c.title, 'AWS') AND SEARCH(c.issuer, 'Amazon'))| SQL path | Type and filtering | Meaning |
|---|---|---|
| certifications. | timestamp Date/time range; scalar expressions | Typed start date of the certification. Filter-only; not stored as a profile value. |
| certifications. | number Numeric range | Numeric start timestamp of the certification. |
| certifications. | timestamp Date/time range; scalar expressions | Typed end date; use IS NULL for a missing end date. Filter-only; not stored as a profile value. |
| certifications. | number Numeric range | Numeric end timestamp; a missing value can represent an open-ended or undated record. |
| certifications. | string Field text SEARCH | Certification issuer name, searched as text. Stemming enabled. |
| certifications. | string Field text SEARCH | Title text for this record. Stemming enabled. |
courses records
courses recordsEach row belongs to one courses element. Apply related conditions inside the same EXISTS scope.
Find people who list at least one course by name:
EXISTS (SELECT 1 FROM UNNEST(courses) AS c WHERE c.title IS NOT NULL)| SQL path | Type and filtering | Meaning |
|---|---|---|
| courses. | string Document text only; presence tests | Course organizer, searched as text. Stemming enabled. |
| courses. | string Document text only; presence tests | Title text for this record. Stemming enabled. |
educations records
educations recordsEach row belongs to one educations element. Apply related conditions inside the same EXISTS scope.
Find people with a bachelor's, master's, or doctoral degree from Stanford:
EXISTS (SELECT 1 FROM UNNEST(educations) AS edu WHERE SEARCH(edu.degree, 'bachelor OR master OR doctor') AND SEARCH(edu.campus, 'Stanford'))| SQL path | Type and filtering | Meaning |
|---|---|---|
| educations. | string Document text only; presence tests | Education activities and societies text. Stemming enabled. |
| educations. | string Field text SEARCH | Institution or campus name, searched as text. Stemming enabled. |
| educations. | string Exact value | Country label attached to this institution or company; not necessarily a two-letter code. |
| educations. | string[] Exact value | Canonical degree labels. Values: associate, bachelor, master, MBA, doctor, postdoc. |
| educations. | number Numeric range | Numeric end timestamp; a missing value can represent an open-ended or undated record. |
| educations. | timestamp Date/time range; scalar expressions | Typed end date; use IS NULL for a missing end date. Filter-only; not stored as a profile value. |
| educations. | string Exact value | Institution focus: FC = full comprehensive (five faculty areas and a medical school), CO = comprehensive (five areas), FO = focused (three or four areas), SP = specialist (two or fewer areas). Values: FC, CO, FO, SP. |
| educations. | boolean Boolean | Indexed local top-university flag. Values: TRUE, FALSE. |
| educations. | boolean Boolean | Indexed top-university flag. Values: TRUE, FALSE. |
| educations. | string Document text only; presence tests | Major or subject text. Stemming enabled. |
| educations. | string Exact value | Institution research intensity: VH = very high, HI = high, MD = medium/moderate, LO = low. Values: VH, HI, MD, LO. |
| educations. | number Numeric range | Indexed numeric education or institution score. |
| educations. | number Numeric range | Sequence or order value from the source record. |
| educations. | string Exact value | Institution size: L = large, XL = extra large, M = medium, S = small. Values: L, XL, M, S. |
| educations. | string Document text only; presence tests | Education specialization text. Stemming enabled. |
| educations. | string Exact value | Canonical education specialization-category label. Values: Business & Management, Finance, Engineering, Computer Science & IT, Health & Medicine, Social Sciences, Natural Sciences, Mathematics, Education, Communication & Media, Arts, Design & Architecture, Humanities & Liberal Arts, Law & Criminal Justice. |
| educations. | timestamp Date/time range; scalar expressions | Typed start date, usable with DATE or TIMESTAMP literals. Filter-only; not stored as a profile value. |
| educations. | number Numeric range | Numeric start timestamp. |
| educations. | string Exact value | Indexed institution status, such as a public/private classification. Values: Public, Private not for Profit, Private for Profit. |
experiences records
experiences recordsEach row belongs to one experiences element. Apply related conditions inside the same EXISTS scope.
This is the company-group scope. Access company attributes through c.company_info; join c.company_roles AS r using UNNEST for role fields. Role location_info belongs to the role rather than the company group. Use r.end_date IS NULL for current employment.
Find people with experience at a company with at least 100 employees:
EXISTS (SELECT 1 FROM UNNEST(experiences) AS c WHERE c.company_info.num_employees >= 100)| SQL path | Type and filtering | Meaning |
|---|---|---|
| experiences. | string[] Exact value | Alternative company domain values. |
| experiences. | number Numeric range | Indexed annual company revenue value. |
| experiences. | string[] Exact value | Canonical company client-size labels. Values: startups, SMBs, mid-market, enterprise. |
| experiences. | string Exact value | Country label attached to this institution or company; not necessarily a two-letter code. |
| experiences. | boolean Boolean | Whether the company is indexed as YC-backed. Values: TRUE, FALSE. |
| experiences. | string Exact value | Company domain, such as stripe.com. |
| experiences. | number Numeric range | Indexed company follower count. |
| experiences. | number Numeric range; scalar expressions | Company founding year as a number. |
| experiences. | number Numeric range | Total indexed company funding in USD. |
| experiences. | boolean Boolean | Whether an IPO is recorded for the company. Values: TRUE, FALSE. |
| experiences. | timestamp Date/time range; scalar expressions | Typed company IPO date. Filter-only; not stored as a profile value. |
| experiences. | boolean Boolean | Indexed AI-company classification. Values: TRUE, FALSE. |
| experiences. | boolean Boolean | Indexed business-to-business company classification. Values: TRUE, FALSE. |
| experiences. | boolean Boolean | Indexed business-to-consumer company classification. Values: TRUE, FALSE. |
| experiences. | boolean Boolean | Indexed cryptocurrency-company classification. Values: TRUE, FALSE. |
| experiences. | boolean Boolean | Indexed ecommerce-company classification. Values: TRUE, FALSE. |
| experiences. | boolean Boolean | Indexed company hiring flag. Values: TRUE, FALSE. |
| experiences. | boolean Boolean | Indexed SaaS-company classification. Values: TRUE, FALSE. |
| experiences. | string[] Exact value | Canonical whole-value company industry labels. |
| experiences. | string[] Document text only; presence tests | Company descriptive terms. Stemming enabled. |
| experiences. | timestamp Date/time range | Typed date of the latest indexed funding round. Filter-only; not stored as a profile value. |
| experiences. | number Numeric range | Amount of the latest indexed funding round. |
| experiences. | string Exact value | Whole-value label of the latest indexed funding round. Common labels: Angel, Pre Seed, Seed, Series A, Series B, Series C, Series D, Series E, Series F, Series G, Series H, Series I, Series J, Other, Venture, Grant. Other source labels can occur. |
| experiences. | string Exact value | Company LinkedIn slug. |
| experiences. | string Field text SEARCH | Name text for the company or membership. No stemming. |
| experiences. | number Numeric range | Indexed company employee count. |
| experiences. | string[] Document text only; presence tests | Company specialties text. Stemming enabled. |
| experiences. | string[] Document text only; presence tests | Company technology text. Stemming enabled. |
| experiences. | string Exact value | Whole-value company type label. Values: Privately Held, Public Company, Nonprofit, Government Agency, Partnership, Educational, Self-Owned, Self-Employed. |
| experiences. | number Numeric range | Indexed company valuation value. |
| experiences. | string Exact value | Company website value; use domain for a domain-only match. |
| experiences. | string Exact value | YC batch label, such as W22, when present. |
| experiences. | number Numeric range | YC batch year as a number. |
experiences.company_info.funding_rounds records
experiences.company_info.funding_rounds recordsEach row belongs to one experiences.company_info.funding_rounds element. Apply related conditions inside the same EXISTS scope.
Find people currently working at a company that raised a Series A round in 2024 or later:
EXISTS (SELECT 1 FROM UNNEST(experiences) AS c CROSS JOIN UNNEST(c.company_roles) AS r CROSS JOIN UNNEST(c.company_info.funding_rounds) AS fr WHERE r.end_date IS NULL AND fr.round_name = 'Series A' AND fr.date >= DATE '2024-01-01')| SQL path | Type and filtering | Meaning |
|---|---|---|
| experiences. | timestamp Date/time range; scalar expressions | Date of the funding round or publication; typed versus numeric representation follows the Type column. |
| experiences. | string Exact value | Whole-value funding round label. Common labels: Angel, Pre Seed, Seed, Series A, Series B, Series C, Series D, Series E, Series F, Series G, Series H, Series I, Series J, Other, Venture, Grant. Other source labels can occur. |
| experiences. | number Scalar aggregate only | Funding-round amount in USD; available to supported scalar aggregates, not a direct indexed range lookup. Filter-only; not stored as a profile value. |
experiences.company_roles records
experiences.company_roles recordsEach row belongs to one experiences.company_roles element. Apply related conditions inside the same EXISTS scope.
Find people currently working as engineers:
EXISTS (SELECT 1 FROM UNNEST(experiences) AS c CROSS JOIN UNNEST(c.company_roles) AS r WHERE r.end_date IS NULL AND SEARCH(r.title, 'engineer'))| SQL path | Type and filtering | Meaning |
|---|---|---|
| experiences. | string[] Exact value | Canonical whole-value title labels for this role. |
| experiences. | string Field text SEARCH | Company name on the experience; tokenized without stemming. No stemming. |
| experiences. | boolean Boolean | Indexed startup-experience flag for this role. Values: TRUE, FALSE. |
| experiences. | number Numeric range; scalar expressions | Indexed role duration in years; supports filtered SUM. Overlapping roles can overlap in the sum. Filter-only; not stored as a profile value. |
| experiences. | number Numeric range | Numeric end timestamp; a missing value can represent an open-ended or undated record. |
| experiences. | timestamp Date/time range; scalar expressions | Typed end date; use IS NULL for a missing end date. Filter-only; not stored as a profile value. |
| experiences. | string Document text only; presence tests | Role description text, tokenized without stemming. No stemming. |
| experiences. | string Exact value | Two-letter country code attached to this record. |
| experiences. | number Numeric range | Latitude in decimal degrees. |
| experiences. | number Numeric range | Longitude in decimal degrees. |
| experiences. | string[] Exact value | Geographic region labels attached to this record. Values: AMER, APAC, Africa, Americas, Antarctica, Asia, Australia and New Zealand, Caribbean, Central America, Central Asia, Channel Islands, EMEA, EU, Eastern Africa, Eastern Asia, Eastern Europe, Europe, Latin America and the Caribbean, Melanesia, Micronesia, Middle Africa, North America, Northern Africa, Northern America, Northern Europe, Oceania, Polynesia, South America, South-eastern Asia, Southern Africa, Southern Asia, Southern Europe, Sub-Saharan Africa, Western Africa, Western Asia, Western Europe. |
| experiences. | number Numeric range | Sequence or order value from the source record. |
| experiences. | number Numeric range | Numeric start timestamp. |
| experiences. | timestamp Date/time range; scalar expressions | Typed start date, usable with DATE or TIMESTAMP literals. |
| experiences. | string Field text SEARCH | Title text for this record. Stemming enabled. |
languages records
languages recordsEach row belongs to one languages element. Apply related conditions inside the same EXISTS scope.
Find people who explicitly list English as a language:
EXISTS (SELECT 1 FROM UNNEST(languages) AS l WHERE l.language = 'English')| SQL path | Type and filtering | Meaning |
|---|---|---|
| languages. | string Exact value | Whole-value language name. |
| languages. | string Exact value | Whole-value proficiency label, not a numeric level. Values: A1, A2, B1, B2, C1, C2. |
memberships records
memberships recordsEach row belongs to one memberships element. Apply related conditions inside the same EXISTS scope.
Find people who list at least one membership by name:
EXISTS (SELECT 1 FROM UNNEST(memberships) AS m WHERE m.name IS NOT NULL)| SQL path | Type and filtering | Meaning |
|---|---|---|
| memberships. | string Document text only; presence tests | Description text for this record; check the filtering column before using it in SEARCH. Stemming enabled. |
| memberships. | string Document text only; presence tests | Name text for the company or membership. Stemming enabled. |
| memberships. | string Document text only; presence tests | Title text for this record. Stemming enabled. |
patents records
patents recordsEach row belongs to one patents element. Apply related conditions inside the same EXISTS scope.
Find people with a patent about neural networks:
EXISTS (SELECT 1 FROM UNNEST(patents) AS p WHERE SEARCH(p.title, 'neural network'))| SQL path | Type and filtering | Meaning |
|---|---|---|
| patents. | string Document text only; presence tests | Description text for this record; check the filtering column before using it in SEARCH. Stemming enabled. |
| patents. | string Document text only; presence tests | Patent reference text. Stemming enabled. |
| patents. | string Field text SEARCH | Title text for this record. Stemming enabled. |
| patents. | string Exact value | URL attached to this patent or publication. |
publications records
publications recordsEach row belongs to one publications element. Apply related conditions inside the same EXISTS scope.
Find people with a publication about distributed systems:
EXISTS (SELECT 1 FROM UNNEST(publications) AS p WHERE SEARCH(p.title, 'distributed systems'))| SQL path | Type and filtering | Meaning |
|---|---|---|
| publications. | string Document text only; presence tests | Description text for this record; check the filtering column before using it in SEARCH. Stemming enabled. |
| publications. | string Document text only; presence tests | Publication issue text. Stemming enabled. |
| publications. | string Field text SEARCH | Title text for this record. Stemming enabled. |
| publications. | string Exact value | URL attached to this patent or publication. |
inferred_languages records
inferred_languages recordsEach row belongs to one inferred_languages element. Apply related conditions inside the same EXISTS scope.
These languages are inferred; use languages when you require explicitly listed language evidence.
Find people inferred to speak English:
EXISTS (SELECT 1 FROM UNNEST(inferred_languages) AS l WHERE l.language = 'English')| SQL path | Type and filtering | Meaning |
|---|---|---|
| inferred_ | string Exact value | Whole-value language name. |
| inferred_ | string Exact value | Whole-value proficiency label, not a numeric level. Values: A1, A2, B1, B2, C1, C2. |
