_private/qwestly-docs/Engineering/2026-06-09-linkedin-api-freshdata-pricing-impact.md
Table of Contents
LinkedIn Profile API: FreshData Pricing Impact Assessment
Date: June 9, 2026 Author: Dom Asana: Audit LinkedIn profile API includes and assess FreshData pricing impact
Executive Summary
FreshData is changing LinkedIn profile endpoint pricing on June 20, 2026. Basic profile cost doubles from 1 to 2 credits. Currently we request zero includes (all 11 set to false), so our per-profile cost goes from 1 to 2 credits (+100%). At our modeled usage (1 profile + 1 company call per user = 3 credits/user), the Pro plan ($45/mo) supports ~1,500 users/month. The Ultra plan ($250/mo) supports ~10,600 users/month. We should upgrade to Ultra when monthly credit utilization on Pro consistently exceeds 80% (~3,600 credits/mo).
1. Current Integration Audit
1.1 Profile requests
File: candidate/src/services/data/linkedin-rapidapi.ts
We call GET /get-personal-profile with all 11 includes explicitly set to false:
| Include | Value | Impact if enabled |
|---|---|---|
include_skills |
false |
+1 credit |
include_certifications |
false |
+1 credit |
include_publications |
false |
+1 credit |
include_honors |
false |
+1 credit |
include_volunteers |
false |
+1 credit |
include_projects |
false |
+1 credit |
include_patents |
false |
+1 credit |
include_courses |
false |
+1 credit |
include_organizations |
false |
+1 credit |
include_profile_status |
false |
+1 credit |
include_company_public_url |
false |
+1 credit |
Cost: 2 credits/request under new pricing (was 1 credit under old pricing).
1.2 Company requests
| Endpoint | Location | Credits |
|---|---|---|
GET /get-company-by-domain |
api-python/lib/integrations/company_profile_upstream.py |
1 |
GET /get-company-by-url |
api-python/lib/integrations/company_profile_upstream.py |
1 |
GET /get-company-by-id |
api-python/lib/integrations/company_profile_upstream.py |
1 |
GET /get-company-by-url (legacy) |
candidate/src/services/data/company-rapidapi.ts |
1 |
Company calls are used less frequently than profile calls, but for worst-case modeling we assume one per user.
1.3 Caching
Profile data is cached in MongoDB (linkedin_profiles collection), with configurable cache and force-refresh options. This means not every user interaction triggers a fresh API call -- only first-time lookups and explicit refreshes. Actual API usage will be lower than total user count.
1.4 Dev servers
Dev servers also hit the FreshData API (all 6 apps: candidate, api-python, agent, hire, internal, public). Using the shared RapidAPI key means dev traffic counts against the same credit/request pool. Dev usage is modest but should be monitored.
2. Pricing Change (June 20, 2026)
2.1 Profile endpoint changes
| Old | New (June 20) | |
|---|---|---|
| Basic profile | 1 credit | 2 credits (+100%) |
| Each include | +0.5 credits, rounded down | +1 credit (+100% minimum) |
| Max cap | 3 credits | No cap |
2.2 Impact on our usage
Since we use zero includes, our per-profile cost goes from 1 → 2 credits (+100%).
2.3 If we ever enable includes
Enabling even one include (e.g., skills) would increase profile cost from 2 → 3 credits (+50%). Enabling three includes would mean 5 credits/profile (+150% over current 2). The removal of the 3-credit cap means poorly-considered includes could be very expensive at scale.
3. Capacity Modeling
3.1 Modeled usage
For analysis, we model 1 profile call + 1 company call per user = 3 credits/user.
3.2 Plan comparison
| Plan | Price/mo | Credits/mo | Req limit | Rate limit | Max users/mo (credit bound) | Max users/mo (req bound) |
|---|---|---|---|---|---|---|
| Pro | $45 | 4,500 | 6,000 | 30/min | 1,500 | 3,000 |
| Ultra | $250 | 32,000 | 40,000 | 60/min | 10,666 | 20,000 |
| Mega | $1,000 | 200,000 | 240,000 | 150/min | 66,666 | 120,000 |
Credits are the binding constraint, not requests. The request limit is ~2x the effective credit limit in all plans.
3.3 Throughput limits
| Plan | Users/minute (rate-limit bound) | Users/hour |
|---|---|---|
| Pro | 15 (at 2 req/user) | 900 |
| Ultra | 30 | 1,800 |
| Mega | 75 | 4,500 |
3.4 Credit-only profile requests (no company call)
If we only make profile calls (2 credits each):
| Plan | Max profiles/mo |
|---|---|
| Pro | 2,250 |
| Ultra | 16,000 |
| Mega | 100,000 |
4. Upgrade Signals
4.1 When to upgrade to Ultra ($250/mo)
Primary signal: Monthly credit utilization consistently exceeds 80% on Pro (~3,600 credits/mo = ~1,200 users at 3 credits/user).
Secondary signals:
- Rate limit throttling (30 req/min causing user-facing delays)
- Approaching the 6,000 request hard limit
- Planning to enable includes for richer profile data
- Launching a feature that drives significant new user acquisition
4.2 Cost breakeven
Ultra costs $205/mo more than Pro. At 3 credits/user, Pro covers 1,500 users. Ultra covers an additional ~9,100 users. The marginal cost on Ultra is ~$0.022/user (vs. Pro's ~$0.03/user). Ultra is cheaper per-user at scale.
4.3 When to consider Mega ($1,000/mo)
Mega becomes relevant at ~10,000+ users/month, or if Sales Navigator search endpoints (50 credits/search) are introduced to the product.
5. Recommendations
-
No immediate action required. Our zero-includes configuration means the pricing change only doubles our per-profile cost -- from 1 to 2 credits. This is the smallest possible impact.
-
Keep includes at
false. Do not enable any includes without explicit review. Each include now costs a full credit and there is no cap. If product requirements demand richer data (skills, certifications, etc.), weigh the cost against the value and trigger an upgrade review. -
Monitor monthly credit consumption. Set up a monthly check to review RapidAPI credit usage against the 4,500-credit Pro limit. If utilization crosses 80% (3,600 credits) consistently, plan the Ultra upgrade.
-
Audit company API usage. The company endpoints are less used but still consume credits. Track actual call volume to refine the model.
-
Update the LinkedIn-Profile-API.md after any plan change to keep the plan table current.
-
Consider caching improvements. MongoDB caching already reduces repeat API calls. Review cache TTLs -- longer TTLs directly reduce credit consumption.
Appendix: Plan Details (from RapidAPI)
| Plan | Monthly Price | Credits | Hard Request Limit | Rate Limit | Overage |
|---|---|---|---|---|---|
| Pro | $45 | 4,500 | 6,000 | 30/min | Hard stop |
| Ultra | $250 | 32,000 | 40,000 | 60/min | Hard stop |
| Mega | $1,000 | 200,000 | 240,000 | 150/min | Hard stop |
References
- LinkedIn Profile API
- FreshData Credit Usage
- FreshData on RapidAPI
candidate/src/services/data/linkedin-rapidapi.ts-- profile API integrationapi-python/lib/integrations/company_profile_upstream.py-- company API integration