Live mode talks to LinkedIn directly and synchronously for each call. Unlike async or schedule, Edges does not apply the same built-in pacing, batching, or orchestration on your behalf. At scale, careless live usage can look like automation and trigger throttling, checkpoints, or account risk.
Goal: mimic human-like usage—similar in spirit to what Edges does in async—by spacing work, avoiding parallelism, and adding randomness.
Using live mode unsafely puts your account at serious risk—you may be temporarily rate limited or even banned from LinkedIn. Having your account blocked due to unsafe usage is not a possibility, it’s only a matter of time.
Treat live mode as your responsibility to rate-limit and sequence. If you need guardrails by default, prefer async or schedule.
Rules of thumb 👍
- Spread actions over time — never fire everything at once.
- Invitations — respect a daily cap and space each attempt by tens of seconds to minutes, with randomized gaps.
- Profile visits — distribute across the day; delay between each live call.
- Search / pagination — always wait between each page (each follow-up request using
X-Pagination-Next or the next cursor).
- No parallel live calls for the same identity on risky outreach—keep the pipeline sequential (one in flight, then the next).
- Random + jitter — add variability to every delay so intervals are not perfectly periodic.
Cold Account
A cold account is one with little recent LinkedIn activity: new identity, long idle period, or a profile that rarely browses, searches, or messages. LinkedIn’s systems weigh sudden spikes more heavily than steady habits—going from near-zero to high-volume live API traffic in a day is one of the riskiest patterns.
Ramp up over several days instead of jumping to your target throughput immediately:
- Days 1–2 — Keep volume very low (a handful of benign actions if you must: light reads, spaced visits, minimal outreach). Use generous gaps between calls—often longer than the suggested minimum spacing table—and no parallelism for the same identity.
- Days 3–5 — Gradually increase daily call count and breadth (more pages, more profiles), still with jitter and sequential execution. If you see
429, checkpoints, or unusual friction, slow down and extend the ramp.
- After ~a week of stable, human-like patterns — You can approach your intended steady-state spacing and volume, still respecting daily caps, invitation limits, and the Rules of thumb guidance above.
There is no single “correct” curve: align ramp length with how warm the account already is and how aggressive your actions are (visits vs. InMail vs. connect). When in doubt, stretch the ramp and favor async or schedule until the account has a believable baseline of activity.
Suggested minimum spacing (live)
These are starting points for time between successive live calls of the same type for the same identity. Adjust per account and monitoring; when in doubt, ~60 s is a reasonable default.
| Action | Recommended gap between calls |
|---|
linkedin-inmail-profile | ~30 s |
linkedin-message-profile | ~60 s |
linkedin-visit-profile | ~30 s |
linkedin-connect-profile | ~60 s (avoid bursts; small batches spaced apart) |
salesnavigator-inmail-profile | ~30 s |
| General (other live actions) | ~60 s |
Combine these delays with jitter (see example below), not fixed sleep only.
Simple Safe pattern: sleep + jitter (JavaScript)
After each live POST completes, wait base delay + random jitter before the next call:
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
/** baseMs = minimum gap; adds 0..jitterMaxMs random extra */
async function waitBetweenLiveCalls(baseMs, jitterMaxMs = 15_000) {
const jitter = Math.floor(Math.random() * (jitterMaxMs + 1));
await sleep(baseMs + jitter);
}
// Example: linkedin-visit-profile — ~30s base, up to +15s jitter
await fetch("https://api.edges.run/v1/actions/linkedin-visit-profile/run/live", {
method: "POST",
headers: {
"X-API-Key": process.env.EDGES_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ /* inputs, identity_mode, … */ }),
});
await waitBetweenLiveCalls(30_000);
// next live call…
For pagination, call waitBetweenLiveCalls with a minimum timeframe after every page (after each response before following X-Pagination-Next).
LinkedIn Commercial Limits
Keep in mind that LinkedIn has multiple mechanisms in place to detect and flag activity that doesn’t appear human. These safeguards are why we enforce daily limits on async and scheduled runs—to ensure security and reduce the risk of triggering LinkedIn’s automated protections.
A single limit may be consumed by multiple actions. Use the Get Identity Limits endpoint to see all limits that apply to a specific action.
Identity Ramp-Up
When a LinkedIn identity is newly connected, its effective capacity ramps up gradually instead of starting at the full quotas in the limits table.
Ramp-up applies to all limits tied to that identity (connection requests, visits, messages, searches, etc.). The full capacity is the value shown in the quotas table for that identity’s account level.
5-day ramp-up
Full capacity is split into 5 equal steps. Each day after the identity is connected, one additional fifth is unlocked:
| Day after connection | Share of full capacity | Example: connection requests (full = 25 / 24 h) |
|---|
| Day 1 | 1/5 (20%) | 5 |
| Day 2 | 2/5 (40%) | 10 |
| Day 3 | 3/5 (60%) | 15 |
| Day 4 | 4/5 (80%) | 20 |
| Day 5+ | 5/5 (100%) | 25 |
At the end of day 5, the identity reaches full capacity for all limits.
Identity rate limits (all actions combined)
These caps apply to the identity as a whole, not per action. All actions executed by the same identity share these windows — they are global throughput limits on total activity.
| Window | Default cap (identity-wide) |
|---|
| Per second | 5 |
| Per minute | 50 |
| Per 15 minutes | 500 |
| Per 4 hours | 2,500 |
| Per 24 hours | 15,000 |
Action rate limits
Each limit defines how many times a specific type of action can be executed within a defined time window.
Limit ↔ Actions & Quotas
Some limits vary depending on the account level: default, CLASSIC, or SALES_NAV.
Most quotas use a 24-hour sliding window, meaning they reset every 24 hours. InMail uses ~31 days .
| Limit Name | Value LinkedIn/Sales Navigator | Per-minute cap |
|---|
| Max profile visits | default & CLASSIC: 80 / 24 h · SALES_NAV: 500 / 24 h | 10 |
| Max messages sent | default, CLASSIC & SALES_NAV: 250 / 24 h | 10 |
| Max connection requests | default: 25 / 24 h · CLASSIC & SALES_NAV: 30 / 24 h | 10 (default & CLASSIC only) |
| Max profile enrichments | CLASSIC: 700 / SALES_NAV: 700 / 24 h | 5 |
| Max company enrichments | CLASSIC: 2000 / SALES_NAV: 2000 / 24 h | 20 |
| Max job enrichments | CLASSIC: 5000 / SALES_NAV: 5000 / 24 h | 10 |
| Max profile components | 450 / 24 h (experiences, educations, skills) | 9 |
| Max contact info | default, CLASSIC & SALES_NAV: 250 / 24 h | — |
| Max event invitations sent | 100 / 24 h | 20 |
| Max linkedin search people | default & SALES_NAV: 450 / 24 h | 10 |
| Max salesnavigator search people | default & SALES_NAV: 950 / 24 h | 20 |
| Max linkedin search company | default & SALES_NAV: 450 / 24 h | 10 |
| Max salesnavigator search company | default & SALES_NAV: 950 / 24 h | 20 |
| Max search saved people | default & SALES_NAV: 5,000 / 24 h | 20 |
| Max search saved company | default & SALES_NAV: 5,000 / 24 h | 20 |
| Max InMail sent | default: 5 / ~31 d · CLASSIC: 15 / ~31 d · SALES_NAV: 50 / ~31 d | 10 |
| Max get post | 10,000 / 24 h | 40 |
| Max get post commenters | 10,000 / 24 h | 40 |
| Max get post likers | 10,000 / 24 h | 40 |
| Max get post reposters | 10,000 / 24 h | 40 |
| Max get people post activity | 10,000 / 24 h | 30 |
| Max get people comment activity | 10,000 / 24 h | 30 |
| Max get people reaction activity | 10,000 / 24 h | 30 |
| Max Extract profile handle and id | 10,000 / 24 h | 30 |
| Max get people reaction activity | 10,000 / 24 h | 30 |
Important Operational Notes
- New identities ramp up to full capacity over 5 days and, on day 1, over the first 5 hours (see New identity ramp-up).
- Limits are rolling windows, not calendar-based.
- Per-minute caps apply even if the daily quota is not exhausted.
- Some actions consume multiple limits simultaneously (e.g., visit + enrichment).
- Sales Navigator accounts have significantly higher visit/search quotas.
- InMail limit works on a ~31-day window, not daily.
- Default identity rate limits (above) are shared across all actions on the same identity. Per-action quotas in the limits table below (
limit_value per limit type) apply separately in addition to those global caps.