5G Proxy reaches the antidetect-browser surface
256 operations: LinkedIn 159, ID and Teams 73, Orchestration 22, Support 2.
proxy_5g on antidetect browsers. The 5G Proxy add-on is now on every surface of the
resource: the browser row carries proxy_5g, both POST /api/antidetect-browsers and
POST /api/antidetect-browsers/update-proxy accept it, and POST /api/antidetect-browsers/search
filters on it (proxy_5g: {eq: true} is how slot usage is counted). Arming a browser with no
add-on headroom left is refused 402 insufficient_proxy_5g_slots.Scraping and enrichment pick an executor for you
Automatic executor selection. Every scraping and enrichment method runs on your own connected
accounts. Pin
linkedin_account_sid and the call runs on that account only, refusing
429 bucket_saturated when its daily budget is spent. Leave it out and the service picks a
connected account with remaining budget for you, skipping accounts on hold or out of capacity;
Sales Navigator methods narrow the pick to accounts holding a live seat. A call with no ready
account answers 422 with a message starting no_connected_accounts: (or sales_nav_required:),
and a team whose accounts are all at capacity gets 429 with retry_after.The three own-dashboard reads
259 operations: LinkedIn 159, ID and Teams 77, Orchestration 21, Support 2.Three feeds off your own LinkedIn dashboard. All three are one-shot, cursor-paginated reads on
an account you connected, and none of them writes anything.
POST /api/linkedin-accounts/{sid}/get-my-profile-viewsreturns who viewed the profile over the last 90 days, newest first. The window and the sort are LinkedIn’s and there is no filter. Rows carry rendered text (“Viewed 1w ago”), never a parseable date, and an anonymized viewer arrives withis_anonymoustrue, no member ids and a people-search url where the profile would be, so branch on that flag before you key a row.POST /api/linkedin-accounts/{sid}/get-my-catch-upreturns the nurture cards on My Network (birthdays, job changes and work anniversaries among the account’s connections), each with the one-click message LinkedIn printed on the button. It lists prompts and sends nothing. There is nopage_sizehere: LinkedIn’s own request carries no count knob and the page is server-fixed at 10. Key a card bycard_urn, which identifies the prompt rather than the person.POST /api/linkedin-accounts/{sid}/get-my-sales-nav-notificationsreturns the Sales Navigator alert bell, and needs a Sales Navigator seat on the account. The feed is ordered by LinkedIn’s relevance score rather than reverse-chronologically, so sort bypublished_atyourself. Alerts arriving without an id are dropped, which means a page can be shorter thanpage_sizewhile the feed continues: do not read a short page as the end here.
LinkedIn product and school search
260 operations: LinkedIn 160, ID and Teams 77, Orchestration 21, Support 2.LinkedIn products search.
POST /api/linkedin-scraping/search-products searches LinkedIn’s
product catalogue and returns product rows (slug, url, name, category line, vendor name, tagline,
top features, a connections counter and artwork). Send filters with a required keywords plus
any of free_version, product_category and product_company, or send a
https://www.linkedin.com/search/results/products/ url the search screen produced. Exactly one of
the two.The two id filters take digit strings from two different places: product_category ids come from
POST /api/linkedin-scraping/param-id-lookup with type=product_category, while
product_company takes ordinary LinkedIn organization ids. Nothing checks one against the other,
so a category id used as a company id returns an empty page rather than an error. The identity
field on a row is product_slug, a slug rather than an id, and it cannot be fed back into either
filter.LinkedIn schools search. POST /api/linkedin-scraping/search-schools searches LinkedIn school
pages and returns school rows (slug, url, name, location line, a students-and-alumni counter and a
blurb). keywords is the whole filter vocabulary here, so every other facet the schools screen
offers is reachable only by pasting a https://www.linkedin.com/search/results/schools/ url into
the same endpoint. There is no school-id filter: the ids param-id-lookup returns for
type=school do not fit this endpoint, and sending one is refused rather than quietly ignored.The identity field is school_slug, a slug rather than an id, and it can arrive URL encoded, so
pass it through as you got it. students_alumni_count is a rounded figure parsed from the text
LinkedIn printed, counting students and alumni, not employees.With these two the LinkedIn search surface is complete: people, companies, both Sales Navigator
searches, service providers, posts, jobs, events, groups, courses, products and schools.LinkedIn course and group search
259 operations: LinkedIn 159, ID and Teams 77, Orchestration 21, Support 2.LinkedIn courses search.
POST /api/linkedin-scraping/search-courses searches LinkedIn
Learning and returns course rows (slug, url, title, author, duration, release and viewer text,
thumbnail). Two filters beyond keywords: difficulty (beginner / intermediate /
advanced) and time_to_complete (under_10_mins through 3_plus_hours). Send those readable
values, not LinkedIn’s own labels: the translation happens server-side. The software and subject
facets are not in the filter vocabulary and are reachable by pasting a
https://www.linkedin.com/search/results/learning/ url into the same endpoint.LinkedIn groups search. POST /api/linkedin-scraping/search-groups returns group rows (id,
url, name, privacy, member count, description, logo). Its filter vocabulary is keywords and
nothing else, which is LinkedIn’s whole surface for that vertical rather than a subset we chose;
every other groups facet is reachable by pasting the UI search url into the same endpoint.Five new LinkedIn endpoints, seven more come out of stub
253 operations, up from 248: LinkedIn 155, ID and Teams 77, Orchestration 21.Company reads that stay cheap.
POST /api/linkedin-enrichment/company-lite-profile returns
id, vanity, name and logo, cached 7 days. POST /api/linkedin-enrichment/company-public-identifier
resolves a numeric company id to its vanity slug, cached 30 days. The pattern the two are built
for: resolve the id once, then address every later company read by vanity. A /company/{slug}/
url is one request on LinkedIn’s side, while a Sales Navigator /sales/company/{id} url costs
two, because the vanity has to be resolved first (measured at 433 ms against 2479 ms).A middle person read. POST /api/linkedin-enrichment/person-basic-profile sits between the
lite identity stub and the full dossier: first and last name as separate fields, headline, country
and display location, profile imagery, and the premium, influencer, creator and verified flags.
One request, cached 24 hours. Addressed by public_identifier only, so resolve the slug first if
all you hold is a URN.Services search by pasted url. The service-providers search gained a url form, so the
marketplace facets the filter vocabulary does not carry are reachable by pasting a
/search/results/services/ url. A url from any other search screen is refused rather than
silently scraping something else.Editable account display fields. PATCH /api/linkedin-accounts/{sid} sets display_name and
label. They are team-authored, never synced from LinkedIn, and an explicit null clears one.Seven more endpoints answer for real, no longer placeholders: my analytics, my SSI, edit my
profile, person certifications, person comment activity, person recommendations, and
service-provider search by filters.Mass actions take nine more step verbs. The browser lifecycle (run, stop, create, delete, and
minting or revoking a cloud-browser access key) plus sync-config and smart-limit edits can now be
plan steps.Initial public release of the reference
The public API contract is published. 248 operations across three services: LinkedIn (150), ID
and Teams (77), Orchestration (21). The reference is generated from the MCP tool registry, one
endpoint per tool, and regenerates with it.The MCP server is live at
mcp.gtm-api.com/mcp, exposing the same contract as 160+ typed
tools across 10 toolsets. Connect guides for Claude, Cursor and Docker-based clients are in the
MCP tab.Webhooks are platform-wide. Subscriptions, signed deliveries (X-Webhook-Signature,
HMAC-SHA256 with a timestamp), a queryable delivery log, and a test endpoint live on the
Orchestration service.Mass actions ship with a two-phase consent flow. Preview validates the whole plan and mints a
15-minute commit token; commit consumes it. Canary mode, randomized pacing and per-item retry are
part of the same surface.