Browse targeting categories
Changed onShows Meta's full tree of detailed targeting categories for an ad account, so you can browse options without a keyword.
The whole Meta detailed-targeting category tree of one ad account (Meta's GET /act_{ad_account_id}/targetingbrowse), as one flat list you can render as a tree. Use it to show what can be targeted without a keyword; use GET /v1/ads/targeting/search to find an entry by name.
Every node is one of two kinds:
- Selectable entity (selectable: true): an interest, behavior or demographic Meta gives an id. id plus type is what a targeting spec takes. interests, behaviors and industries ids go in TargetingSpec.interests, behaviors and workIndustries on POST /v1/ads/create; every other type goes in rawTargeting.flexible_spec under its type as the key. life_events, family_statuses and income take objects ({ "flexible_spec": [{ "life_events": [{ "id": "6017476616183" }] }] }), while education_statuses and relationship_statuses take the bare number ({ "flexible_spec": [{ "education_statuses": [3] }] }): Meta answers an object there with a 500.
- Organizational node (selectable: false, id: null): a category such as Demographics > Financial > Income that only groups other nodes and cannot be targeted. A few carry a type and have no children (Schools, Employers, Job titles, Fields of study, Undergrad years): those are open-ended categories Meta only exposes through search (dimension=workEmployer / workPosition on the search endpoint).
nodeId identifies a node within this response and parentNodeId points at its parent (null for the three roots Demographics, Interests, Behaviors). A selectable node's nodeId is {type}:{id}, because Meta reuses small ids across types (education status 3 and relationship status 3 are different entities). An organizational node's nodeId is its full path joined with >. Labels are kept exactly as Meta sends them, including stray leading or trailing spaces, because Meta has sibling nodes that differ only by whitespace.
The interests branch is Meta's curated browse list (a few hundred entries), not every interest Meta can target: search finds the long tail.
No pagination. Meta returns the whole catalog in one response (about 770 nodes) and ignores limit, so there is no cursor. Narrow it with type, parentNodeId and selectable instead; they are applied by Zernio. The catalog is cached for an hour per ad account and connection.
Request
- Base URL: https://zernio.com/api
- URL: https://zernio.com/api/v1/ads/targeting/browse
- Auth: HTTP bearer
Query parameters
A connected Meta account (metaads, facebook or instagram). Any other ad platform returns 501 platform_not_supported.
The Meta ad account to browse as, in the form "act_<digits>".
Only the nodes of this Meta type (e.g. interests, behaviors, life_events, income), plus the organizational nodes leading to them. A type that is not in the catalog returns 400.
Only the descendants (every depth) of this organizational node, e.g. Demographics > Financial. A nodeId that is not an organizational node of the catalog returns 400.
true for selectable entities only, false for organizational nodes only.
Response
The category tree as a flat list, in Meta's order (parents before their children).
Changes
- info
endpoint added
- info