OutX enforces rate limits at two levels: API request rate limits and daily task limits managed by the Chrome extension.
API Request Rate Limits
OutX does not enforce API request rate limits for the first month on any paid plan. After the first month, reasonable usage limits may apply based on your plan.
The primary constraint is LinkedIn itself. Since all actions are executed through real browser sessions, you must respect LinkedIn’s activity limits to avoid account restrictions. See the LinkedIn Data API section below and LinkedIn Safety for guidelines.
If you hit a rate limit, you receive a 429 response:
{
"error": "Rate limit exceeded. Please try again later."
}
Daily Task Limits (Watchlist & Engagement API)
All watchlist and engagement tasks run through the Chrome extension on real LinkedIn accounts. Each LinkedIn account (team member) has daily processing limits.
How Daily Limits Work
Every task — keyword scan, profile tracking, like, comment — is executed by a team member’s Chrome extension browsing LinkedIn. This means:
- Limits are per LinkedIn account, not per API key
- If you create a watchlist with 200 keywords but the daily keyword scan limit is 40, OutX will process ~40 per day from each active LinkedIn account
- Add more team members to parallelize — each team member’s Chrome extension processes tasks independently
- Remaining tasks queue automatically and process on subsequent days
Creating a large watchlist doesn’t mean all keywords start tracking immediately. Tasks are distributed across your team’s active browser sessions and processed within daily limits. Add more team members with active Chrome extensions to increase throughput.
Watchlist Scanning Limits (per LinkedIn account per day)
| Task Type | Daily Limit |
|---|
| Keyword tracking scans | 30 |
| Profile tracking scans | 50 |
| Company tracking scans | 50 |
| Profile comment tracking | 50 |
Engagement Limits (per user per day)
| Task Type | Daily Limit |
|---|
| Post likes | 50 |
| Post comments | 25 |
Daily limits reset at UTC midnight (00:00 UTC). Weekly limits reset on Monday at 00:00 UTC.
LinkedIn Data API — No Rate Limiting by OutX
OutX is a proxy to LinkedIn, not a rate limiter. The LinkedIn Data API (/linkedin-agent/* endpoints) passes your requests directly through to LinkedIn via real browser sessions. OutX does not throttle, queue, or rate-limit these requests on your behalf.If you send too many requests in a short period, LinkedIn may flag the underlying account for unusual activity. OutX cannot protect you from this.
LinkedIn Data API Task Limits
These are daily task creation limits — they cap how many tasks you can create, but they do not pace your requests:
| Task Type | Daily Limit |
|---|
Profile fetch (fetch-profile) | 30 per team |
Posts fetch (fetch-profiles-posts) | 30 per team |
Like post (like-post) | 50 per team |
Comment on post (comment-post) | 25 per team |
Best Practices by Endpoint
Use these as maximum safe throughput guidelines. Lower is always safer.
| Endpoint | Daily Limit | Recommended Pace | Max per Hour |
|---|
fetch-profile | 30/day | 1 every 2–3 minutes | 3–4 |
fetch-profiles-posts | 30/day | 1 every 2–3 minutes | 3–4 |
like-post | 50/day | 1 every 1–2 minutes | 5–6 |
comment-post | 25/day | 1 every 3–5 minutes | 2–3 |
Safe Usage Guidelines
To avoid LinkedIn flagging the account running the Chrome extension:
- Space out requests — follow the pace guidelines above; never send back-to-back calls
- Distribute throughout the day — spread 30 profile fetches across 8+ hours, not in a single burst
- Mix action types — alternating between fetches, likes, and comments looks more natural than doing all likes first, then all comments
- Keep volumes realistic — a normal LinkedIn user doesn’t view 30 profiles or like 50 posts in an hour
- Add delays in your code — use
sleep(60) or setTimeout(60000) between API calls in loops
- Monitor the account — if a team member receives LinkedIn warnings, reduce volume immediately
Plan-Based Quotas
These limits vary by plan and do not reset daily:
| Resource | Free | Growth | Expert | Ultimate |
|---|
| Watchlists | 2 | 5 | 20 | 100 |
| Profiles tracked per watchlist | - | 200 | 200 | 200 |
| Potential leads per watchlist/week | - | 400 | 250 | 100 |
| Team members | 5 | 10 | 25 | Unlimited |
| Auto-engagement rules per watchlist | 1 | 2 | 5 | 10 |
| OutX Credits/month | - | 100 | 500 | 2,000 |
When you hit a plan quota, you receive a 402 response with a message describing the limit. See Error Codes for details.
Retry Strategy
When you receive a 429 response, use exponential backoff:
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch(url, options);
if (response.status === 429) {
const waitTime = Math.pow(2, attempt) * 1000; // 1s, 2s, 4s
await new Promise(resolve => setTimeout(resolve, waitTime));
continue;
}
return response;
}
throw new Error('Rate limit exceeded after retries');
}
Best Practices
- Batch watchlist creation — Create multiple watchlists in a single session rather than spreading across hours
- Use appropriate fetch frequency — Set
fetchFreqInHours based on how often you actually need new data. Lower frequency = fewer tasks consumed
- Cache API responses — Store post data locally instead of re-fetching the same posts
- Monitor usage — Track your daily task consumption to avoid hitting limits unexpectedly
- Use webhooks-style polling — Instead of frequent polling, check
/api-posts with sort_by=recent_first at reasonable intervals
Learn More