/v1/ads/targeting/search currently exposes only the interests facet forLinkedIn. The B2B facets that actually matter forour customers, industries, job functions, seniorities and company sizes, have to be passed as URN id fragments we
supply ourselves, and there is no way to search them by name.
Why it matters to us: we maintain our own static lists of LinkedIn's facet codes, currently 147 industries, 26 job functions, 10 seniorities and 9 company sizes. That means two things. We carry the risk that those lists drift from LinkedIn's
own tables without us noticing, and our users can'ttype"roofing" and get the matching industry, they can only pick from a list we happened to include.
What would help: name search over those four facets in the same endpoint, returning the URN we should pass back. We don't need anything clever, just lookup, so we can stop maintaining a copy of someone else's taxonomy.
Shipped and live. GET /v1/ads/targeting/search now accepts industry, jobFunction, seniority and companySize for LinkedIn, in the same response shape as interest. The id you get back is the full URN to pass straight into targeting, so you can drop your local tables.
Verified against production just now:
industry=software -> Software Development [urn:li:industry:4] (6 results)
industry=construction -> Construction [urn:li:industry:48] (8 results)
jobFunction=engineering -> Engineering [urn:li:function:8]
seniority=director -> Director [urn:li:seniority:6]
companySize=51-200->51-200 employees [urn:li:staffCountRange:(51,200)]
Two things worth knowing, both from probing LinkedIn directly rather than from the docs.
Only industries has real server-side name search. LinkedIn reports the available finders per facet, and only industries offers TYPEAHEAD. jobFunctions, seniorities and staffCountRanges reject it outright with "Specified facet is not available for the finder being used". For those three we enumerate the table and match on our side, cached, since they are 26, 10 and 9 rows. Same request shape for you either way, but the matching for those three is a substring match rather than LinkedIn's own ranking.
Your drift concern was well founded. LinkedIn's live industries table has 494 entries, not the 147 you are carrying, so roughly two thirds of the taxonomy was unreachable for your users.
One honest caveat on your own example: industry=roofing returns nothing. There is no roofing entry anywhere in those 494 rows, so that is a gap in LinkedIn's ads taxonomy rather than something name search can solve. The nearest usable match is Construction.
Not included: job titles. That facet does have a typeahead finder and is still not searchable through this endpoint even though targeting.jobTitles exists. Say the word if you want it and we will add it the same way.
Log in to comment and vote
Comments1
Miquel Palet López
Sep 11
Shipped and live.
GET /v1/ads/targeting/searchnow acceptsindustry,jobFunction,seniorityandcompanySizefor LinkedIn, in the same response shape asinterest. Theidyou get back is the full URN to pass straight into targeting, so you can drop your local tables.Verified against production just now:
industry=software -> Software Development [urn:li:industry:4] (6 results) industry=construction -> Construction [urn:li:industry:48] (8 results) jobFunction=engineering -> Engineering [urn:li:function:8] seniority=director -> Director [urn:li:seniority:6] companySize=51-200 -> 51-200 employees [urn:li:staffCountRange:(51,200)]Two things worth knowing, both from probing LinkedIn directly rather than from the docs.
Only industries has real server-side name search. LinkedIn reports the available finders per facet, and only
industriesoffers TYPEAHEAD.jobFunctions,senioritiesandstaffCountRangesreject it outright with "Specified facet is not available for the finder being used". For those three we enumerate the table and match on our side, cached, since they are 26, 10 and 9 rows. Same request shape for you either way, but the matching for those three is a substring match rather than LinkedIn's own ranking.Your drift concern was well founded. LinkedIn's live industries table has 494 entries, not the 147 you are carrying, so roughly two thirds of the taxonomy was unreachable for your users.
One honest caveat on your own example:
industry=roofingreturns nothing. There is no roofing entry anywhere in those 494 rows, so that is a gap in LinkedIn's ads taxonomy rather than something name search can solve. The nearest usable match is Construction.Not included: job titles. That facet does have a typeahead finder and is still not searchable through this endpoint even though
targeting.jobTitlesexists. Say the word if you want it and we will add it the same way.