in LinkedIn API Live in production. Email, messengers & calendars next
Pricing Blog
Get API key Sign in

The gtm-api Free Plan

The gtm-api Free Plan

One LinkedIn account, the full UI, API and MCP, no card. What runs unlimited, what runs on a daily allowance, and what stays paid.

Updated October 2026 · 16 min read

The GTM API free plan gives one connected LinkedIn account the whole product: the interface, the REST API and the MCP server, for one user, with no card and no expiry. The plan is metered, not cut down. What it meters is how many actions of each type you can run per day, and webhooks too: one endpoint on the free plan, 100 on a paid one.

The numbers are smaller than on a paid plan, and each of them sits well inside LinkedIn’s own ceilings for one account. The metering itself is the same on every plan. 20,000+ LinkedIn accounts run on this stack, and under 1% of them have ever been restricted.

What the free plan includes

The whole GTM API product on one connected LinkedIn account, for one user, with no card and no expiry. The plan documentation calls it Sandbox, the forever free plan. You can drive that account from the interface, from your own backend over REST, or from an AI agent over MCP, and it is the same contract underneath all three.

  • One connected LinkedIn account. It runs in one parallel cloud browser session, so a single agent works the account at a time.
  • One user. The workspace is single seat, which is what makes this a plan for running your own profile.
  • The full action surface. Outreach, engagement, scraping, enrichment, inbox and network operations are all reachable. The endpoints are the ones paid accounts call.
  • No card and no expiry. The account does not lapse into a paywall after a fortnight.

Two things are off rather than metered: team members, since the workspace is single-user, and the AI copilot. The AI Assistant in the API docs is a different thing and stays free. Realtime message push is off as well, which shapes how the webhook works further down.

Peter Kaliuzhny, a GTM API expert, walks the plan end to end in the video below. It was recorded before the free plan gained its webhook, so where it calls webhooks paid-only, the webhooks section is the current answer.

The daily caps in one table

Every action type has its own daily allowance on the free plan, and the allowance is checked before the call runs. Here is the whole grid, per connected account, per day.

Bucket Action Free plan, per day What one unit is
Sync Full sync of every surface Included, once a day Profile, connections, inbox, invites, premium status
Sync Database reads Unlimited, free One query against your synced data
Sync Self-syncs 40 One surface refreshed on demand
Outreach Connection requests 5 One invitation sent
Outreach Messages 10 One message sent
Outreach InMails 5 One InMail sent
Outreach Posts 4 A post published or scheduled, or a change to the scheduled queue
Engagement Profile visits 8 One profile opened
Engagement Comments 5 One comment on a post or on a comment
Engagement Reactions 5 One reaction
Engagement Endorsements 5 One skill endorsed
Data Scraping 15 One page of results, 25 leads on a Sales Navigator page
Data Enrichment 12 One person
Housekeeping Messaging general 15 One inbox operation
Housekeeping Networking general 6 One invite, connection or degree operation
Housekeeping Profile edits 2 One edit to your own profile
Housekeeping Custom requests 9 One raw LinkedIn call on your own account
Webhooks Registered endpoints 1 One endpoint, any event types

A few points about that table matter more than any individual number in it.

  • The caps are per connected account. They travel with the account, so a second account is a plan question and never a way to double a bucket.
  • They cap volume and never access. Nothing in the free plan is a stub or a preview. A call you can make at 5 a day is the same call a paid account makes more often.
  • These are plan allowances and belong to GTM API. LinkedIn runs its own ceilings on top, and the daily numbers here sit well inside them. Anyone planning real sending volume should read them next to LinkedIn limits and scaling LinkedIn outreach.

Some rows count something other than what their name suggests.

  • Posts, 4 a day. They cover a publish plus the queue work around it: scheduling, rescheduling, removing a draft. One post a day is about what a single profile puts out anyway, so the cap rarely bites.
  • Comments and reactions, 5 each. Both work at two levels, on a post or on someone else’s comment.
  • Scraping, 15 pages. A page, not a person. A Sales Navigator results page carries 25 leads, so 15 pages is up to 375 leads a day off search alone, and the same unit covers the people who commented on a post or everyone who engaged with it.
  • Enrichment, 12 people. Your account visits one profile and pulls its current data back, which suits a decision about one person: whether a commenter is worth a reply, whether to accept an invitation.
  • Messaging general, 15. Working the inbox itself: marking a thread read or unread, creating a group chat, downloading an attachment, reacting to a message, muting a group.
  • Networking general, 6. Withdrawing an invitation you sent, removing a connection, accepting or ignoring an incoming invitation, and checking the degree of connection to a lead.
  • Profile edits, 2. Enough for a headline swap or a section update without turning the profile into a moving target.

Scraping and enrichment both run on your own LinkedIn account, which is what keeps the data fresh and also what makes it worth pacing. Bulk list building at volume is a job for tooling that does not touch your profile at all, and the trade-offs between the two approaches sit on the LinkedIn API guide.

Smart limits on top of the plan caps

The numbers in the caps table are the most the free plan will ever allow, but they are not what a fresh account starts at. On top of the plan cap, GTM API runs smart limits, a warmup engine that starts a newly connected account low and raises its allowance day by day. Smart limits work exactly the same on free and paid plans, and they are yours to control: switch them off and the account goes straight to the plan caps, or leave them on and let the account warm up toward them. The only free-plan difference is where the warmup curve tops out, which is the free tier’s own ceiling.

The Smart Limits tab of the GTM API account drawer: a warmup score of 32% and the six signals behind it
The warmup score. A one-month-old account at 32%: its age, three concurrent sessions and an incomplete profile hold it back, while blocks, limit hits and activity read clean.
The per-action caps on the Smart Limits tab: auto cap, warm-up target, delay, actions done in 24 hours and status for each action
The caps it allows today. Auto cap is the smart limit for each action, the warm-up target is an optional bound you set, and Done 24h counts what already went out.

To see it for your own account, open the account from the accounts list and go to the Smart Limits tab of the drawer. The warmup score at the top multiplies six live signals into the day’s allowance, and the auto cap on each action below is what that allowance comes to today. That auto cap is the smart limit, the one you can switch off. The free plan’s ceiling from the caps table applies on top, and the lower of the two is the one enforced, so on the free plan an auto cap never runs above the plan’s figure: 5 connection requests, 10 messages, 5 InMails a day. The check runs before the action does, so an agent in a loop gets refused rather than discovering the problem in the account’s health afterwards. When a call comes back rate_limited, the bucket named on that tab is the one you emptied.

How your data gets in: syncs and free reads

The first sync comes before anything else. A freshly connected account is not usable straight away. The inbox has to be pulled in properly, and the database has to be built up far enough to answer questions like whether you are connected with a given person. GTM API runs that first pass deliberately slowly, which is the safe way to do it and also the slow way, so a large account with years of history can take a while. Calls made while it is still syncing come back refused, which is expected and nothing to report. Once it is done the account goes live, and every bucket becomes available at once.

Then a free sync runs once a day. On a schedule, GTM API refreshes every surface on the account without touching any allowance:

  • Profile info and health. Who the account is and what shape it is in.
  • Connections. The network as it stands.
  • Inbox. All conversations and the messages inside them.
  • Sales Navigator inbox. Kept separately from the regular one.
  • Sent invites. What you have out and pending.
  • Incoming invites. What is waiting for a decision.
  • Premium status. Which tier the account is on.

An agent on a morning schedule wakes up to the whole inbox, the new connections and the pending invites, and spends its first calls deciding what to do about them.

On top of that, 40 self-syncs a day, on your schedule. One request refreshes one surface, a row on the Account Sync tab, so the budget is 40 surface refreshes and you decide how to spend them: asking for conversations and for invitations is two of the 40. An hourly inbox refresh through a working day costs well under half. A short burst is the other useful shape: publish a post, refresh the engagement surface every five minutes for half an hour while the comments arrive, then go quiet. Match the rate to how fast a surface changes: an inbox rewards a steady poll, and premium status needs nothing between daily passes.

The Account Sync tab of the GTM API account drawer on the free plan: seven surfaces, each refreshed every 24 hours, under the sync days and hours
One request, one surface. The Account Sync tab on the free plan: seven surfaces, each refreshed every 24 hours, inside the sync days and hours set above them.

Reading what was synced costs nothing. Queries against the stored data are unlimited and free, with no bucket touched and no daily ceiling. These are the small questions an agent asks before it does anything else. Am I connected with this person. Have we ever had a conversation. When did I last message them, and what kind of message was it. Has anyone else on the team been in touch. Answering those out of a local dataset lets an agent check its facts as often as it likes, with the whole daily allowance still intact for the calls that change something.

💡 Read the sync date with the answerA database read answers as of the last sync, so on the free plan its picture can be up to a day old. When you need the current truth for one person, the fresh routes are a self-sync of the relevant surface and a degree check, which spends one networking general unit.

One webhook fed by your syncs

The free plan includes one webhook. That is one registered endpoint, and it can subscribe to every event type the platform sends. A second registration comes back refused with webhook_limit_reached, and a paid plan carries 100.

What the free plan leaves out is the realtime part. On a paid account, while its browser holds a live LinkedIn session, a new message reaches your webhook within seconds of arriving. Keeping that session open all day means running the account continuously on a server, and the free plan does not do it. So on a free account the webhook fires when the platform finds out, which is when the daily pass or one of your self-syncs reads what changed.

That turns the 40 self-syncs and the webhook into one loop. Schedule an inbox self-sync every half hour across a sixteen-hour day, which is 32 of the 40, and each pass that finds something new delivers it to the webhook. Your agent reacts to what arrived and never has to compare the inbox against its last copy. The worst-case delay on a new message stays at thirty minutes. Tighten the interval on the surfaces that matter and leave the rest to the daily pass.

One thing to plan around: a trigger in n8n, Make or Zapier registers a webhook of its own. On a free workspace that is one trigger at a time, so if a workflow needs several event types, point the one trigger at an entry workflow and branch from there. The event list and the signature check are in the webhooks guide.

The free plan runs out in one of a few ways: you need a second LinkedIn account, a teammate in the workspace, more than one webhook, or a new message reaching your agent within seconds instead of at the next sync. A paid plan covers all four, with more connected accounts, team members, 100 webhooks and realtime push while an account’s browser holds a live session, and its daily allowances sit higher under the same smart limits. Paid plans start from $10 per connected account per month, and the current grid sits on the pricing page.

Frequently Asked Questions

Does the GTM API free plan expire?

No. It covers one connected LinkedIn account for one user, with no card required and no end date. The documentation calls it Sandbox, the forever free plan. Paid plans start from $10 per connected account per month and add more accounts, higher daily allowances and 100 webhooks.

How many LinkedIn actions can I run per day on the free plan?

Per connected account, per day: 5 connection requests, 10 messages, 5 InMails, 4 posting actions, 8 profile visits, 5 comments, 5 reactions, 5 endorsements, 15 pages of scraping, 12 enrichments, 15 general messaging operations, 6 general networking operations, 2 profile edits and 9 custom requests (raw LinkedIn calls on your own account). Alongside those you get 40 self-syncs, one free full sync of every surface, and unlimited reads of your synced data.

Why are my API calls refused right after I connect an account?

Because the account is still in its initial synchronization. That first pass builds the inbox and the connection data the rest of the system reads from, and it runs slowly on purpose, so a large account with a long history can take a while. Most activities and API calls stay unavailable until it completes, then the account goes live and every bucket opens at once.

What counts as one scraping unit and one enrichment unit?

Scraping is counted in pages of results, and one Sales Navigator search page holds 25 leads, so the free allowance of 15 pages is up to 375 leads a day. Enrichment is counted in people: one request is one profile visited from your own account, with the current data pulled back, and the free allowance is 12 a day.

What is a self-sync, and how is it different from the daily sync?

The daily sync is automatic. Once a day GTM API refreshes every surface on the account for free: profile and health, connections, the inbox, the Sales Navigator inbox, sent invites, incoming invites and premium status. A self-sync is the same refresh triggered by you, at a moment you choose, and one request covers one surface. The free plan carries 40 of them a day.

Can I use webhooks on the free plan?

Yes, one. The free plan includes one webhook endpoint, and it can subscribe to every event type. There is no realtime push on the free plan, so a LinkedIn event such as a new message reaches the webhook when a sync reads it: the daily pass, or one of your 40 daily self-syncs. A half-hourly inbox self-sync over a sixteen-hour day costs 32 of them and caps the delay at thirty minutes. A trigger in n8n, Make or Zapier registers its own webhook, so one trigger runs at a time.

Do database reads count against a daily allowance?

No. Queries against your own synced data are unlimited and free, so an agent can check whether you are connected with someone, whether you have messaged them before or when the last message went out, as often as it likes. The answers reflect the last sync, so for a fact that has to be current right now use a self-sync or a degree check instead.

Sources & Further Reading

Connect one account and see.

Create a free account, connect one LinkedIn profile, wait out the initial sync, then point your agent at it. No card, no expiry, and the whole action surface is there from the first call.

Start free →

Read the plan documentation →

Last updated: October 2026 · Definitions and benchmarks verified at time of publication