What we do
Any public website, any scale
Give us a target site and requirements. We extract, clean, and deliver structured data on a schedule you define — no infrastructure needed on your side
We handle the hard parts
Anti-bot bypass, CAPTCHA solving, browser fingerprinting, JavaScript rendering, proxy rotation, and schema design — all managed by our team
Delivered to your pipeline
Real-time API, scheduled files, or webhooks. Data lands in S3, GCS, SFTP, or your destination of choice — on the cadence you need
Dedicated account manager
A named person on every project. They handle onboarding, monitor delivery, and respond to issues the same day
How it works
1
Tell us your requirements
Target sites, data fields, delivery format, and refresh frequency. A 20-minute call is usually enough to scope.
2
We build and test
Our team builds the extractors, validates against your schema, and delivers a sample for your approval before going live.
3
Data arrives on schedule
Continuous delivery with monitoring. Your dedicated account manager handles any site changes or issues.
B2B & Sales
AI SDR Platforms
People and company data for automated prospecting, personalisation, and AI-driven outreach sequences
Sales Intelligence
LinkedIn profiles and company data as a full enrichment layer for account intelligence and CRM tools
AI Recruiting Platforms
Candidate profile data for sourcing engines, skills-based matching, and AI-powered recruiting tools
AI & Model Training
Training data, RAG pipelines, and agent enrichment. Schema-consistent records ready for ingestion
Creator & Influencer
Influencer Marketing Platforms
Creator discovery, audience analytics, and campaign management tools built on YouTube, TikTok, and Instagram data
Creator Discovery Tools
Search and filter 200M+ YouTube channels and 100M+ TikTok profiles by niche, follower tier, engagement, and location
Creator Intelligence
Engagement benchmarks, subscriber growth trends, SEO scores, and contact emails across all major platforms
Travel Intelligence
Rate Parity Monitoring
Track hotel and airline pricing across OTA and direct channels. Detect parity breaches in real time
Competitive Rate Intelligence
Monitor competitor pricing across target routes and properties. Feed directly into revenue management systems
OTA Aggregation
Normalised pricing and availability data across 19+ OTAs and brand sites. One schema, all sources
Reviews Intelligence
Competitive Intelligence
Monitor competitor ratings, review trends, and sentiment shifts across G2, Glassdoor, and Capterra
Voice of Customer
Structured review data for NLP, sentiment modelling, and product intelligence at scale
Employer Intelligence
Track employer sentiment, interview experience, and culture signals across Glassdoor and Clutch
WebAutomation
Pricing
Get started free
v1 · stable Read-only dataset · no live scraping

LinkedIn Data API

Search 680M+ people and 102M+ companies from our LinkedIn dataset. Size a segment for free, then pay only for the profiles you actually receive. Misses and errors are never charged.

Open the API console Read the reference
No SDK required — plain HTTPS + JSON. Keys are prefixed wa_live_ / wa_test_.
curl works in the console too
# 1. Size the segment (free)
curl https://api.webautomation.io/v1/person/count \
  -H "Authorization: Bearer wa_live_…" \
  -H "Content-Type: application/json" \
  -d '{"filters": {"country": "united states",
                  "department": "Sales",
                  "title_prefix": "director"}}'

# 2. Pull the first page (billed per profile)
curl https://api.webautomation.io/v1/person/search \
  -H "Authorization: Bearer wa_live_…" \
  -H "Content-Type: application/json" \
  -d '{"filters": {"country": "united states",
                  "department": "Sales"},
       "per_page": 25}'
680M+
people profiles, worldwide coverage
102M+
company profiles with domain + LinkedIn URL
Per profile
pay only for results — counting is always free
5
endpoints, one response envelope
Quickstart

Three calls to your first list

01
Create a key
Account Settings → API Keys. The full key is shown exactly once — store it safely. Send it on every request as Authorization: Bearer <key>.
02
Count before you pay
person/count is free and returns the exact segment size for any filter set, so you know the maximum bill before you run it.
03
Search, then page
person/search bills per profile returned, at your plan's rate. Every response carries credits_used and credits_remaining.
Pricing & credits

One credit, one profile. Nothing else.

EndpointCostWhen
GET /v1/accountFreeAlways
POST /v1/person/countFreeAlways · cached ~5 min
POST /v1/person/searchCharged per profile actually returned
GET /v1/company/enrichOnly on a match · a miss is a free 404
GET /v1/company/employeesCharged per profile actually returned
Any error responseFreeErrors are never charged

Paid calls are pre-authorised at per_page and charged for what actually comes back — the difference is refunded automatically. The standard rate is 1 credit per profile or match; your plan's exact per-call costs are always visible in /v1/account under costs. Credits are shared with your WebAutomation account balance; your plan may include an API credit allowance, and you can top up any time on the pricing page. Check your balance live via /v1/account or your dashboard.

Rate limits

Limits by plan, headers on every response

Every key is rate-limited per minute and per day according to your plan — read your own limits from /v1/account, and the live state from the X-RateLimit-* headers present on every response. Exceeding a limit returns 429 with a Retry-After header telling you exactly how long to back off. Upgrading your plan raises the ceiling.

# Present on every /v1 response
X-RateLimit-Limit:     60
X-RateLimit-Remaining: 57
X-RateLimit-Reset:     1756900000
Retry-After:           12   # 429 only
Filters

Match exactly, by prefix, or by range

Match typeKeysExample
Exact country state city location title seniority seniority_level functional_area industry first_name last_name name linkedin_url "country": ["united kingdom", "ireland"]
Prefix title_prefix headline_prefix location_prefix name_prefix industry_prefix "title_prefix": "director"
Range connections_min connections_max followers_min followers_max "connections_min": 500
Special company_linkedin_url (company URL or slug) · department (case-insensitive, 20 canonical values) "department": ["Sales", "Marketing"]

Array values are OR within a key; separate keys are AND. Unknown keys return 422 with the full list of valid filters. Departments: Administrative, C-Suite, Consulting, Customer Service, Design, Education, Engineering and Technical, Finance & Accounting, Human Resources, Legal, Marketing, Medical, Operations, Other, Product, Project Management, Real Estate, Research, Sales, Trades.

Response envelope & errors

One shape, every response

{
  "status":            false,
  "detail":            [ "Unknown filter(s): dept. Valid: …" ],
  "result":            null,
  "credits_used":      0,
  "credits_remaining": 4877
}

# Same envelope for every status code,
# success and error alike.
CodeMeaning
401Missing or invalid key. Send Authorization: Bearer wa_…. Revoked keys fail within minutes.
402Not enough credits for this call — rejected before any work runs. Lower per_page or top up.
404Company miss on enrich/employees (free).
422Invalid filter or body — detail lists the valid filters.
429Rate limit hit — honour Retry-After.
500Our fault, never charged. Retry, or contact support.
Resources

Get started faster

Postman collection
All endpoints with ready-made example requests. Download the collection, or in Postman use Import → Link and paste that URL. Then set the api_key collection variable to your key.
API console
Exercise every endpoint from the browser with your real key — open the console. Billable endpoints charge real credits.
Reference (ReDoc)
The same specification as a readable reference — open the reference.
OpenAPI 3.0 spec
Machine-readable spec for codegen and tooling: /wapi/linkedin/