@harvestapi/scraper
v1.5.14
Published
HarvestAPI provides LinkedIn data scraping tools for real-time, high-performance scraping at a low cost. API allows to search for Linkedin `jobs`, `companies`, `profiles`, and `posts` using a wide range of filters.
Maintainers
Readme
HarvestAPI scraping tools
HarvestAPI provides LinkedIn data scraping tools for real-time, high-performance scraping at a low cost.
API allows to search for Linkedin jobs, companies, profiles, and posts using a wide range of filters.
Installation
npm install @harvestapi/scraperUsage examples
Search for specific items.
To search for specific items, such as job listings, you can use the searchJobs method. Below is an example of how to search for job listings and retrieve details for a specific job:
import { createLinkedinScraper } from '@harvestapi/scraper';
// Initialize the scraper with your API key
const scraper = createLinkedinScraper({
apiKey: 'your-api-key', // Replace with your HarvestAPI key. Obtain it at https://harvest-api.com/admin/api-keys
});
(async () => {
const jobs = await scraper.searchJobs({
search: 'software engineer', // Job title to search for
location: 'California', // Location filter
page: 1, // Page number to retrieve
});
console.log(`jobs`, JSON.stringify(jobs, null, 2));
const jobDetails = await scraper.getJob({
jobId: jobs.elements[0].id, // Use the job ID from the search results
});
console.log(`jobDetails`, JSON.stringify(jobDetails, null, 2));
})();Scraping All Search Pages and Saving Data
The scrape methods allows you to scrape all pages of search results and save the data either to a SQLite database or a JSON file. This method automatically handles pagination and will scrape all available pages based on the totalPages metadata.
After fetching a page, the scraper will also make a separate request per each item, to fetch its details (default behavior).
- Optionally install SQLite (if you want to save data to SQLite):
npm i sqlite sqlite3- Use the
scrapeJobs,scrapeCompanies,scrapeProfiles, orscrapePostsmethods to scrape data and save it to a SQLite database or JSON file.
await scraper.scrapeProfiles({
query: {
search: 'Mark',
companyId: '1441', // Google company id.
location: 'US',
},
outputType: 'sqlite',
});If you you want make requests to only fetch search pages, without fetching item details, you can pass scrapeDetails: false option to the scrape method. For example scrapeJobs will not fetch job descriptions in this case, but you will get job title, links and some other basic info (check JobShort below).
After the scraping process is complete, you can view the data using any SQLite database browser. The data will be saved in a file located at ./output/{timestamp}_profiles_{id}.{sqlite|json}.
API Reference
For more detailed information on the available methods and their parameters, check the API reference below
createLinkedinScraper()
createLinkedinScraper(
options):LinkedinScraper
Parameters
options
Returns
createConcurrentQueues()
createConcurrentQueues<
TArgs,TRes>(concurrency,fn,opts?):AsyncFunction<TArgs,TRes>
Type Parameters
• TArgs extends any[] = any[]
• TRes = any
Parameters
concurrency
number
fn
AsyncFunction<TArgs, TRes>
opts?
Returns
AsyncFunction<TArgs, TRes>
createConcurrentQueuesPerKey()
createConcurrentQueuesPerKey<
TArgs,TRes>(keyGetter,queuesNumber,fn,opts?):AsyncFunction<TArgs,TRes>
Type Parameters
• TArgs extends any[]
• TRes = any
Parameters
keyGetter
(...args) => string
queuesNumber
number
fn
AsyncFunction<TArgs, TRes>
opts?
Returns
AsyncFunction<TArgs, TRes>
Classes
LinkedinScraper
Methods
getProfile()
getProfile(
params):Promise<ApiItemResponse<Profile>>
Parameters
params
BaseFetchParams & GetLinkedInProfileParams
Returns
Promise<ApiItemResponse<Profile>>
getProfileId()
getProfileId(
params):Promise<ApiItemResponse<{id:string; }>>
Parameters
params
BaseFetchParams & object
Returns
Promise<ApiItemResponse<{ id: string; }>>
searchProfiles()
searchProfiles(
params):Promise<ApiListResponse<ProfileShort>>
Parameters
params
BaseFetchParams & SearchLinkedInProfilesParams
Returns
Promise<ApiListResponse<ProfileShort>>
getCompany()
getCompany(
params):Promise<ApiItemResponse<Company>>
Parameters
params
BaseFetchParams & GetLinkedinCompanyParams
Returns
Promise<ApiItemResponse<Company>>
searchCompanies()
searchCompanies(
params):Promise<ApiListResponse<CompanyShort>>
Parameters
params
BaseFetchParams & SearchLinkedinCompaniesParams
Returns
Promise<ApiListResponse<CompanyShort>>
getJob()
getJob(
params):Promise<ApiItemResponse<Job>>
Parameters
params
BaseFetchParams & GetLinkedinJobParams
Returns
Promise<ApiItemResponse<Job>>
searchJobs()
searchJobs(
params):Promise<ApiListResponse<JobShort>>
Parameters
params
BaseFetchParams & SearchLinkedinJobsParams
Returns
Promise<ApiListResponse<JobShort>>
searchPosts()
searchPosts(
params):Promise<ApiListResponse<PostShort>>
Parameters
params
BaseFetchParams & SearchLinkedinPostsParams
Returns
Promise<ApiListResponse<PostShort>>
getProfilePosts()
getProfilePosts(
params):Promise<ApiListResponse<PostShort>>
Parameters
params
BaseFetchParams & GetProfilePostsParams
Returns
Promise<ApiListResponse<PostShort>>
getCompanyPosts()
getCompanyPosts(
params):Promise<ApiListResponse<PostShort>>
Parameters
params
BaseFetchParams & GetCompanyPostsParams
Returns
Promise<ApiListResponse<PostShort>>
getPost()
getPost(
params):Promise<ApiItemResponse<PostShort>>
Parameters
params
BaseFetchParams & GetLinkedinPostParams
Returns
Promise<ApiItemResponse<PostShort>>
getSinglePostComment()
getSinglePostComment(
params):Promise<ApiItemResponse<PostComment>>
Parameters
params
BaseFetchParams & GetLinkedinPostCommentParams
Returns
Promise<ApiItemResponse<PostComment>>
getPostReactions()
getPostReactions(
params):Promise<ApiListResponse<PostReaction>>
Parameters
params
BaseFetchParams & GetLinkedinPostReactionsParams
Returns
Promise<ApiListResponse<PostReaction>>
getPostComments()
getPostComments(
params):Promise<ApiListResponse<PostComment>>
Parameters
params
BaseFetchParams & GetLinkedinPostCommentsParams
Returns
Promise<ApiListResponse<PostComment>>
getPostCommentReplies()
getPostCommentReplies(
params):Promise<ApiListResponse<PostComment>>
Parameters
params
BaseFetchParams & GetLinkedinPostCommentRepliesParams
Returns
Promise<ApiListResponse<PostComment>>
getCommentReactions()
getCommentReactions(
params):Promise<ApiListResponse<PostReaction>>
Parameters
params
BaseFetchParams & GetLinkedinPostCommentReactionsParams
Returns
Promise<ApiListResponse<PostReaction>>
getProfileComments()
getProfileComments(
params):Promise<ApiListResponse<PostComment>>
Parameters
params
BaseFetchParams & GetLinkedinProfileCommentsParams
Returns
Promise<ApiListResponse<PostComment>>
getProfileReactions()
getProfileReactions(
params):Promise<ApiListResponse<ProfileReaction>>
Parameters
params
BaseFetchParams & GetLinkedinProfileReactionsParams
Returns
Promise<ApiListResponse<ProfileReaction>>
scrapeJobs()
scrapeJobs(
__namedParameters):Promise<undefined| {pages:number;pagesSuccess:number;items:number;itemsSuccess:number;requests:number;requestsStartTime:Date; }>
Parameters
__namedParameters
Returns
Promise<undefined | { pages: number; pagesSuccess: number; items: number; itemsSuccess: number; requests: number; requestsStartTime: Date; }>
scrapeCompanies()
scrapeCompanies(
__namedParameters):Promise<undefined| {pages:number;pagesSuccess:number;items:number;itemsSuccess:number;requests:number;requestsStartTime:Date; }>
Parameters
__namedParameters
Returns
Promise<undefined | { pages: number; pagesSuccess: number; items: number; itemsSuccess: number; requests: number; requestsStartTime: Date; }>
scrapeProfiles()
scrapeProfiles(
__namedParameters):Promise<undefined| {pages:number;pagesSuccess:number;items:number;itemsSuccess:number;requests:number;requestsStartTime:Date; }>
Parameters
__namedParameters
Returns
Promise<undefined | { pages: number; pagesSuccess: number; items: number; itemsSuccess: number; requests: number; requestsStartTime: Date; }>
scrapePosts()
scrapePosts(
__namedParameters):Promise<undefined| {pages:number;pagesSuccess:number;items:number;itemsSuccess:number;requests:number;requestsStartTime:Date; }>
Parameters
__namedParameters
Returns
Promise<undefined | { pages: number; pagesSuccess: number; items: number; itemsSuccess: number; requests: number; requestsStartTime: Date; }>
scrapePostReactions()
scrapePostReactions(
__namedParameters):Promise<undefined| {pages:number;pagesSuccess:number;items:number;itemsSuccess:number;requests:number;requestsStartTime:Date; }>
Parameters
__namedParameters
ScrapeLinkedinPostReactionsParams
Returns
Promise<undefined | { pages: number; pagesSuccess: number; items: number; itemsSuccess: number; requests: number; requestsStartTime: Date; }>
scrapePostComments()
scrapePostComments(
__namedParameters):Promise<undefined| {pages:number;pagesSuccess:number;items:number;itemsSuccess:number;requests:number;requestsStartTime:Date; }>
Parameters
__namedParameters
ScrapeLinkedinPostCommentsParams
Returns
Promise<undefined | { pages: number; pagesSuccess: number; items: number; itemsSuccess: number; requests: number; requestsStartTime: Date; }>
scrapePostCommentReplies()
scrapePostCommentReplies(
__namedParameters):Promise<undefined| {pages:number;pagesSuccess:number;items:number;itemsSuccess:number;requests:number;requestsStartTime:Date; }>
Parameters
__namedParameters
ScrapeLinkedinPostCommentRepliesParams
Returns
Promise<undefined | { pages: number; pagesSuccess: number; items: number; itemsSuccess: number; requests: number; requestsStartTime: Date; }>
scrapeProfileComments()
scrapeProfileComments(
__namedParameters):Promise<undefined| {pages:number;pagesSuccess:number;items:number;itemsSuccess:number;requests:number;requestsStartTime:Date; }>
Parameters
__namedParameters
ScrapeLinkedinProfileCommentsParams
Returns
Promise<undefined | { pages: number; pagesSuccess: number; items: number; itemsSuccess: number; requests: number; requestsStartTime: Date; }>
scrapeProfileReactions()
scrapeProfileReactions(
__namedParameters):Promise<undefined| {pages:number;pagesSuccess:number;items:number;itemsSuccess:number;requests:number;requestsStartTime:Date; }>
Parameters
__namedParameters
ScrapeLinkedinProfileReactionsParams
Returns
Promise<undefined | { pages: number; pagesSuccess: number; items: number; itemsSuccess: number; requests: number; requestsStartTime: Date; }>
searchSalesNavigatorLeads()
searchSalesNavigatorLeads(
params):Promise<ApiListResponse<ProfileShort>>
Parameters
params
BaseFetchParams & SearchLinkedInSalesNavLeadsParams
Returns
Promise<ApiListResponse<ProfileShort>>
scrapeSalesNavigatorLeads()
scrapeSalesNavigatorLeads(
__namedParameters):Promise<undefined| {pages:number;pagesSuccess:number;items:number;itemsSuccess:number;requests:number;requestsStartTime:Date; }>
Parameters
__namedParameters
ScrapeLinkedinSalesNavLeadsParams
Returns
Promise<undefined | { pages: number; pagesSuccess: number; items: number; itemsSuccess: number; requests: number; requestsStartTime: Date; }>
getGroup()
getGroup(
params):Promise<ApiItemResponse<{name:string;url:string; }>>
Parameters
params
BaseFetchParams & object
Returns
Promise<ApiItemResponse<{ name: string; url: string; }>>
searchGroups()
searchGroups(
params):Promise<ApiListResponse<{name:string;url:string; }>>
Parameters
params
BaseFetchParams & object
Returns
Promise<ApiListResponse<{ name: string; url: string; }>>
searchServices()
searchServices(
params):Promise<ApiListResponse<ProfileServiceShort>>
Parameters
params
BaseFetchParams & SearchLinkedinServicesParams
Returns
Promise<ApiListResponse<ProfileServiceShort>>
scrapeServices()
scrapeServices(
__namedParameters):Promise<undefined| {pages:number;pagesSuccess:number;items:number;itemsSuccess:number;requests:number;requestsStartTime:Date; }>
Parameters
__namedParameters
Returns
Promise<undefined | { pages: number; pagesSuccess: number; items: number; itemsSuccess: number; requests: number; requestsStartTime: Date; }>
searchAds()
searchAds(
params):Promise<ApiListResponse<LinkedinAdShort>>
Parameters
params
BaseFetchParams & SearchLinkedinAdsParams
Returns
Promise<ApiListResponse<LinkedinAdShort>>
getAd()
getAd(
params):Promise<ApiItemResponse<LinkedInAd>>
Parameters
params
BaseFetchParams & GetLinkedinAdParams
Returns
Promise<ApiItemResponse<LinkedInAd>>
Interfaces
BaseFetchParams
Properties
addHeaders?
optionaladdHeaders:Record<string,string>
cookie?
optionalcookie:string
proxy?
optionalproxy:string
userAgent?
optionaluserAgent:string
sessionId?
optionalsessionId:string
GetLinkedInProfileParams
Properties
url?
optionalurl:string
publicIdentifier?
optionalpublicIdentifier:string
profileId?
optionalprofileId:string
query?
optionalquery:string
findEmail?
optionalfindEmail:boolean
skipSmtp?
optionalskipSmtp:boolean
main?
optionalmain:boolean
SearchLinkedInProfilesParams
Properties
currentCompany?
optionalcurrentCompany:string|string[]
currentCompanyId?
optionalcurrentCompanyId:string|string[]
currentCompanyUniversalName?
optionalcurrentCompanyUniversalName:string|string[]
pastCompany?
optionalpastCompany:string|string[]
pastCompanyId?
optionalpastCompanyId:string|string[]
pastCompanyUniversalName?
optionalpastCompanyUniversalName:string|string[]
school?
optionalschool:string|string[]
schoolId?
optionalschoolId:string|string[]
schoolUniversalName?
optionalschoolUniversalName:string|string[]
geoId?
optionalgeoId:string|string[]
location?
optionallocation:string|string[]
industryId?
optionalindustryId:string|string[]
search?
optionalsearch:string
title?
optionaltitle:string
firstName?
optionalfirstName:string
lastName?
optionallastName:string
keywordsCompany?
optionalkeywordsCompany:string
keywordsSchool?
optionalkeywordsSchool:string
page?
optionalpage:number
SearchLinkedInSalesNavLeadsParams
Properties
currentCompanies?
optionalcurrentCompanies:string|string[]
pastCompanies?
optionalpastCompanies:string|string[]
schools?
optionalschools:string|string[]
locations?
optionallocations:string|string[]
geoIds?
optionalgeoIds:string|string[]
search?
optionalsearch:string
page?
optionalpage:number
salesNavUrl?
optionalsalesNavUrl:string
currentJobTitles?
optionalcurrentJobTitles:string|string[]
pastJobTitles?
optionalpastJobTitles:string|string[]
firstNames?
optionalfirstNames:string|string[]
lastNames?
optionallastNames:string|string[]
industryIds?
optionalindustryIds:string|string[]
yearsAtCurrentCompanyIds?
optionalyearsAtCurrentCompanyIds:string|string[]
Map: { "1": "Less than 1 year", "2": "1 to 2 years", "3": "3 to 5 years", "4": "6 to 10 years", "5": "More than 10 years" }
yearsOfExperienceIds?
optionalyearsOfExperienceIds:string|string[]
Map: { "1": "Less than 1 year", "2": "1 to 2 years", "3": "3 to 5 years", "4": "6 to 10 years", "5": "More than 10 years" }
seniorityLevelIds?
optionalseniorityLevelIds:string|string[]
Map: { "100": "In Training", "110": "Entry Level", "120": "Senior", "130": "Strategic", "200": "Entry Level Manager", "210": "Experienced Manager", "220": "Director", "300": "Vice President", "310": "CXO", "320": "Owner / Partner" }
functionIds?
optionalfunctionIds:string|string[]
Map: { "1": "Accounting", "2": "Administrative", "3": "Arts and Design", "4": "Business Development", "5": "Community and Social Services", "6": "Consulting", "7": "Education", "8": "Engineering", "9": "Entrepreneurship", "10": "Finance", "11": "Healthcare Services", "12": "Human Resources", "13": "Information Technology", "14": "Legal", "15": "Marketing", "16": "Media and Communication", "17": "Military and Protective Services", "18": "Operations", "19": "Product Management", "20": "Program and Project Management", "21": "Purchasing", "22": "Quality Assurance", "23": "Real Estate", "24": "Research", "25": "Sales", "26": "Customer Success and Support" }
recentlyChangedJobs?
optionalrecentlyChangedJobs:boolean
profileLanguages?
optionalprofileLanguages:string|string[]
Map: { "ar": "Arabic", "en": "English", "es": "Spanish", "pt": "Portuguese", "zh": "Chinese", "fr": "French", "it": "Italian", "ru": "Russian", "de": "German", "nl": "Dutch", "tr": "Turkish", "tl": "Tagalog", "pl": "Polish", "ko": "Korean", "ja": "Japanese", "ms": "Malay", "no": "Norwegian", "da": "Danish", "ro": "Romanian", "sv": "Swedish", "in": "Bahasa Indonesia", "cs": "Czech" }
companyHeadcount?
optionalcompanyHeadcount:LsnCompanyHeadcount|LsnCompanyHeadcount[]
Map: { "A": "self-employed", "B": "1-10", "C": "11-50", "D": "51-200", "E": "201-500", "F": "501-1000", "G": "1001-5000", "H": "5001-10000", "I": "10001+" }
excludeCurrentCompanies?
optionalexcludeCurrentCompanies:string|string[]
excludePastCompanies?
optionalexcludePastCompanies:string|string[]
excludeLocations?
optionalexcludeLocations:string|string[]
excludeGeoIds?
optionalexcludeGeoIds:string|string[]
excludeSchools?
optionalexcludeSchools:string|string[]
excludeCurrentJobTitles?
optionalexcludeCurrentJobTitles:string[]
excludePastJobTitles?
optionalexcludePastJobTitles:string[]
excludeIndustryIds?
optionalexcludeIndustryIds:string|string[]
excludeSeniorityLevelIds?
optionalexcludeSeniorityLevelIds:string|string[]
excludeFunctionIds?
optionalexcludeFunctionIds:string|string[]
SearchLinkedinServicesParams
Properties
search?
optionalsearch:string
page?
optionalpage:number
location?
optionallocation:string
geoId?
optionalgeoId:string
GetLinkedinCompanyParams
Properties
universalName?
optionaluniversalName:string
url?
optionalurl:string
companyId?
optionalcompanyId:string
search?
optionalsearch:string
query?
optionalquery:string
location?
optionallocation:string
SearchLinkedinAdsParams
Properties
searchUrl?
optionalsearchUrl:string
accountOwner?
optionalaccountOwner:null|string
keyword?
optionalkeyword:null|string
countries?
optionalcountries:null|string|string[]
dateOption?
optionaldateOption:null|"last-30-days"|"current-month"|"current-year"|"last-year"|"custom-date-range"
startdate?
optionalstartdate:null|string
enddate?
optionalenddate:null|string
paginationToken?
optionalpaginationToken:null|string
GetLinkedinAdParams
Properties
adId?
optionaladId:string
url?
optionalurl:string
SearchLinkedinCompaniesParams
Properties
geoId?
optionalgeoId:string
location?
optionallocation:string
search?
optionalsearch:string
page?
optionalpage:number
companySize?
optionalcompanySize:LinkedinCompanySize|LinkedinCompanySize[]
industryId?
optionalindustryId:string|number|string[] |number[]
GetLinkedinJobParams
Properties
jobId?
optionaljobId:string
url?
optionalurl:string
withCompany?
optionalwithCompany:boolean
SearchLinkedinJobsParams
Properties
search?
optionalsearch:string
company?
optionalcompany:string|string[]
companyId?
optionalcompanyId:string|string[]
companyUniversalName?
optionalcompanyUniversalName:string|string[]
location?
optionallocation:string
geoId?
optionalgeoId:string
sortBy?
optionalsortBy:"date"|"relevance"
workplaceType?
optionalworkplaceType:LinkedinWorkplaceType|LinkedinWorkplaceType[]
employmentType?
optionalemploymentType:LinkedinJobType|LinkedinJobType[]
experienceLevel?
optionalexperienceLevel:ExperienceLevel|ExperienceLevel[]
under10Applicants?
optionalunder10Applicants:boolean
easyApply?
optionaleasyApply:boolean
postedLimit?
optionalpostedLimit:"1h"|"24h"|"week"|"month"
page?
optionalpage:number
salary?
optionalsalary:LinkedinSalaryRange|LinkedinSalaryRange[]
SearchLinkedinPostsParams
Properties
search?
optionalsearch:string
page?
optionalpage:number
sortBy?
optionalsortBy:"date"|"relevance"
postedLimit?
optionalpostedLimit:"24h"|"week"|"month"
targetUrl?
optionaltargetUrl:string|string[]
scrapePostedLimit?
optionalscrapePostedLimit:ScrapePostedLimitOptions
profile?
optionalprofile:string|string[]
companyId?
optionalcompanyId:string|string[]
profileId?
optionalprofileId:string|string[]
company?
optionalcompany:string|string[]
companyUniversalName?
optionalcompanyUniversalName:string|string[]
profilePublicIdentifier?
optionalprofilePublicIdentifier:string|string[]
authorsCompany?
optionalauthorsCompany:string|string[]
authorsCompanyUniversalName?
optionalauthorsCompanyUniversalName:string|string[]
authorsCompanyId?
optionalauthorsCompanyId:string|string[]
group?
optionalgroup:string
paginationToken?
optionalpaginationToken:null|string
GetProfilePostsParams
Properties
profile?
optionalprofile:string
profileId?
optionalprofileId:string
profilePublicIdentifier?
optionalprofilePublicIdentifier:string
page?
optionalpage:number
paginationToken?
optionalpaginationToken:string
scrapePostedLimit?
optionalscrapePostedLimit:ScrapePostedLimitOptions
GetCompanyPostsParams
Properties
company?
optionalcompany:string
companyId?
optionalcompanyId:string
companyUniversalName?
optionalcompanyUniversalName:string
page?
optionalpage:number
paginationToken?
optionalpaginationToken:string
scrapePostedLimit?
optionalscrapePostedLimit:ScrapePostedLimitOptions
GetLinkedinPostParams
Properties
post?
optionalpost:string|number
targetUrl?
optionaltargetUrl:string
GetLinkedinPostCommentParams
Properties
url?
optionalurl:string|number
GetLinkedinPostReactionsParams
Properties
post
post:
string|number
page?
optionalpage:number
GetLinkedinPostCommentReactionsParams
Properties
url
url:
string|number
page?
optionalpage:number
GetLinkedinPostCommentsParams
Properties
post
post:
string|number
page?
optionalpage:number
paginationToken?
optionalpaginationToken:null|string
sortBy?
optionalsortBy:"date"|"relevance"
postedLimit?
optionalpostedLimit:"24h"|"week"|"month"
GetLinkedinPostCommentRepliesParams
Properties
url
url:
string|number
paginationToken?
optionalpaginationToken:null|string
postedLimit?
optionalpostedLimit:"24h"|"week"|"month"
GetLinkedinProfileCommentsParams
Properties
targetUrl?
optionaltargetUrl:string
profile?
optionalprofile:string
profileId?
optionalprofileId:string
profilePublicIdentifier?
optionalprofilePublicIdentifier:string
company?
optionalcompany:string
companyId?
optionalcompanyId:string
companyUniversalName?
optionalcompanyUniversalName:string
page?
optionalpage:number
paginationToken?
optionalpaginationToken:null|string
postedLimit?
optionalpostedLimit:"24h"|"week"|"month"
GetLinkedinProfileReactionsParams
Properties
targetUrl?
optionaltargetUrl:string
profile?
optionalprofile:string
profileId?
optionalprofileId:string
profilePublicIdentifier?
optionalprofilePublicIdentifier:string
company?
optionalcompany:string
companyId?
optionalcompanyId:string
companyUniversalName?
optionalcompanyUniversalName:string
page?
optionalpage:number
paginationToken?
optionalpaginationToken:null|string
BaseApiResponse
Properties
entityId
entityId:
null|string
requestId
requestId:
string
status
status:
number
error
error:
any
query
query:
Record<string,any>
originalQuery
originalQuery:
Record<string,any>
user?
optionaluser:object
membershipTier
membershipTier:
string
requestsConcurrency
requestsConcurrency:
number
payments
payments:
string[]
cost
cost:
number
Type Aliases
ListingScraperConfig<TItemShot, TItemDetails>
ListingScraperConfig<
TItemShot,TItemDetails>:object
Type Parameters
• TItemShot
• TItemDetails
Type declaration
outputType?
optionaloutputType:"json"|"sqlite"|"callback"
outputDir?
optionaloutputDir:string
filename?
optionalfilename:string
tableName?
optionaltableName:string
Table name for SQLite output.
scrapeDetails?
optionalscrapeDetails:boolean
Whether to make an additional request for each item details.
Default
truekeepScrapingIfAllSkippedOnPage?
optionalkeepScrapingIfAllSkippedOnPage:boolean
Whether to keep scraping further pages if all items on the current page were skipped.
Default
falseonItemScraped()?
optionalonItemScraped: (args) =>any
Parameters
args
object & Partial<ApiItemResponse<TItemShot | TItemDetails>>
Returns
any
onFirstPageFetched()?
optionalonFirstPageFetched: (args) =>any
Parameters
args
data
ApiListResponse<TItemShot> | null
Returns
any
onPageFetched()?
optionalonPageFetched: (args) =>Promise<OnPageFetchedCallbackRes|void> |OnPageFetchedCallbackRes|void
Parameters
args
page
number
data
ApiListResponse<TItemShot> | null
Returns
Promise<OnPageFetchedCallbackRes | void> | OnPageFetchedCallbackRes | void
overrideConcurrency?
optionaloverrideConcurrency:number
overridePageConcurrency?
optionaloverridePageConcurrency:number
maxItems?
optionalmaxItems:number
disableLog?
optionaldisableLog:boolean
disableErrorLog?
optionaldisableErrorLog:boolean
optionsOverride?
optionaloptionsOverride:Partial<ListingScraperOptions<TItemShot,TItemDetails>>
sessionId?
optionalsessionId:string
addListingHeaders?
optionaladdListingHeaders:Record<string,string>
addItemHeaders?
optionaladdItemHeaders:Record<string,string>
takePages?
optionaltakePages:number
startPage?
optionalstartPage:number
getFetchListParams()?
optionalgetFetchListParams: (args) =>Record<string,any>
Parameters
args
page
number
pagination
ApiPagination | null
Returns
Record<string, any>
ScraperOptions
ScraperOptions:
object
Type declaration
apiKey
apiKey:
string
baseUrl?
optionalbaseUrl:string
addHeaders?
optionaladdHeaders:Record<string,string>
logger?
optionallogger:object
logger.log()
log: (...
args) =>void
Parameters
args
...any[]
Returns
void
logger.error()
error: (...
args) =>void
Parameters
args
...any[]
Returns
void
LsnCompanyHeadcount
LsnCompanyHeadcount:
"self-employed"|"1-10"|"11-50"|"51-200"|"201-500"|"501-1000"|"1001-5000"|"5001-10000"|"10001+"
LinkedinCompanySize
LinkedinCompanySize:
"1-10"|"11-50"|"51-200"|"201-500"|"501-1000"|"1001-5000"|"5001-10000"|"10001+"
LinkedinSalaryRange
LinkedinSalaryRange:
"40k+"|"60k+"|"80k+"|"100k+"|"120k+"|"140k+"|"160k+"|"180k+"|"200k+"
LinkedinJobType
LinkedinJobType:
"full-time"|"part-time"|"contract"|"internship"
LinkedinWorkplaceType
LinkedinWorkplaceType:
"office"|"hybrid"|"remote"
ExperienceLevel
ExperienceLevel:
"internship"|"entry"|"associate"|"mid-senior"|"director"|"executive"
ScrapePostedLimitOptions
ScrapePostedLimitOptions:
"1h"|"24h"|"week"|"month"|"3months"|"6months"|"year"
Profile
Profile:
object
Type declaration
id
id:
string
publicIdentifier
publicIdentifier:
string
lastName
lastName:
string
firstName
firstName:
string
headline
headline:
string
about
about:
string
linkedinUrl
linkedinUrl:
string
photo
photo:
string
emails
emails:
string[]
websites
websites:
string[]
registeredAt
registeredAt:
string
topSkills
topSkills:
string
connectionsCount
connectionsCount:
number
followerCount
followerCount:
number
openToWork
openToWork:
boolean
hiring
hiring:
boolean
location
location:
object
location.linkedinText
linkedinText:
string
location.countryCode
countryCode:
string
location.parsed
parsed:
object
location.parsed.text
text:
string
location.parsed.countryCode
countryCode:
string
location.parsed.regionCode
regionCode:
string|null
location.parsed.country
country:
string
location.parsed.countryFull
countryFull:
string
location.parsed.state
state:
string
location.parsed.city
city:
string
currentPosition
currentPosition:
object[]
experience
experience:
object[]
education
education:
object[]
certifications
certifications:
object[]
receivedRecommendations
receivedRecommendations:
object[]
skills
skills:
object[]
languages
languages:
object[]
projects
projects:
object[]
publications
publications:
object[]
honorsAndAwards
honorsAndAwards:
object[]
courses
courses:
object[]
featured
featured:
object
featured.images
images:
string[]
featured.link
link:
string
featured.title
title:
string
featured.subtitle
subtitle:
string
verified
verified:
boolean
moreProfiles
moreProfiles:
object[]
ProfileShort
ProfileShort:
object
Type declaration
id
id:
string
publicIdentifier
publicIdentifier:
string
name?
optionalname:string
position?
optionalposition:string
location?
optionallocation:object
location.linkedinText?
optionallinkedinText:string
linkedinUrl?
optionallinkedinUrl:string
photo?
optionalphoto:string
hidden?
optionalhidden:boolean
ProfileServiceShort
ProfileServiceShort:
object
Type declaration
id
id:
string
name?
optionalname:string
position?
optionalposition:string
location?
optionallocation:object
location.linkedinText?
optionallinkedinText:string
linkedinProfileUrl?
optionallinkedinProfileUrl:string
picture?
optionalpicture:string
services
services:
string[]
summary?
optionalsummary:string
objectUrn
objectUrn:
string
Company
Company:
object
Type declaration
id
id:
string
universalName
universalName:
string
name?
optionalname:string
tagline?
optionaltagline:string
website?
optionalwebsite:string
linkedinUrl?
optionallinkedinUrl:string
logo?
optionallogo:string
foundedOn?
optionalfoundedOn:object
foundedOn.month?
optionalmonth:string|null
foundedOn.year?
optionalyear:number
foundedOn.day?
optionalday:string|null
employeeCount?
optionalemployeeCount:number
employeeCountRange?
optionalemployeeCountRange:object
employeeCountRange.start?
optionalstart:number
employeeCountRange.end?
optionalend:number
followerCount?
optionalfollowerCount:number
description?
optionaldescription:string
locations?
optionallocations:object[]
specialities?
optionalspecialities:string[]
industries?
optionalindustries:object[]
logos?
optionallogos:object[]
backgroundCovers?
optionalbackgroundCovers:object[]
active?
optionalactive:boolean
jobSearchUrl?
optionaljobSearchUrl:string
phone?
optionalphone:object
phone.number
number:
string
phone.extension?
optionalextension:string|null
crunchbaseFundingData?
optionalcrunchbaseFundingData:object
crunchbaseFundingData.numberOfFundingRounds?
optionalnumberOfFundingRounds:number
crunchbaseFundingData.lastFundingRound?
optionallastFundingRound:object
crunchbaseFundingData.lastFundingRound.localizedFundingType?
optionallocalizedFundingType:string
crunchbaseFundingData.lastFundingRound.leadInvestors?
optionalleadInvestors:Record<string,never>[]
crunchbaseFundingData.lastFundingRound.moneyRaised?
optionalmoneyRaised:object
crunchbaseFundingData.lastFundingRound.moneyRaised.amount?
optionalamount:string
crunchbaseFundingData.lastFundingRound.moneyRaised.currencyCode?
optionalcurrencyCode:string
crunchbaseFundingData.lastFundingRound.fundingRoundUrl?
optionalfundingRoundUrl:string
crunchbaseFundingData.lastFundingRound.announcedOn?
optionalannouncedOn:object
crunchbaseFundingData.lastFundingRound.announcedOn.month?
optionalmonth:number
crunchbaseFundingData.lastFundingRound.announcedOn.year?
optionalyear:number
crunchbaseFundingData.lastFundingRound.announcedOn.day?
optionalday:number
crunchbaseFundingData.lastFundingRound.numberOfOtherInvestors?
optionalnumberOfOtherInvestors:number
crunchbaseFundingData.lastFundingRound.investorsUrl?
optionalinvestorsUrl:string
crunchbaseFundingData.organizationUrl?
optionalorganizationUrl:string
crunchbaseFundingData.updatedAt?
optionalupdatedAt:number
crunchbaseFundingData.fundingRoundsUrl?
optionalfundingRoundsUrl:string
pageVerified?
optionalpageVerified:boolean
similarOrganizations?
optionalsimilarOrganizations:CompanyShort[]
CompanyShort
CompanyShort:
object
Type declaration
id
id:
string
universalName
universalName:
string
linkedinUrl
linkedinUrl:
string
name?
optionalname:string
industries?
optionalindustries:string
location?
optionallocation:object
location.linkedinText?
optionallinkedinText:string
followers?
optionalfollowers:string
summary?
optionalsummary:string
logo?
optionallogo:string
Job
Job:
object
Type declaration
id
id:
string
title?
optionaltitle:string
url?
optionalurl:string
jobState?
optionaljobState:string
postedDate?
optionalpostedDate:string
descriptionText?
optionaldescriptionText:string
descriptionHtml?
optionaldescriptionHtml:string
location?
optionallocation:object
location.linkedinText?
optionallinkedinText:string
location.postalAddress?
optionalpostalAddress:string|null
location.parsed?
optionalparsed:object
location.parsed.text?
optionaltext:string
location.parsed.countryCode?
optionalcountryCode:string
location.parsed.regionCode?
optionalregionCode:string|null
location.parsed.country?
optionalcountry:string
location.parsed.countryFull?
optionalcountryFull:string
location.parsed.state?
optionalstate:string
location.parsed.city?
optionalcity:string
employmentType?
optionalemploymentType:"full_time"|"part_time"|"contract"|"internship"
workplaceType?
optionalworkplaceType:"on_site"|"hybrid"|"remote"
workRemoteAllowed?
optionalworkRemoteAllowed:boolean
easyApplyUrl?
optionaleasyApplyUrl:string
applicants?
optionalapplicants:number
company
company:
Company
salary
salary: {
text:string;min:number;max:number;currency:string;payPeriod:string;compensationType:string;compensationSource:string;providedByEmployer:boolean; } |null
views?
optionalviews:number
expireAt?
optionalexpireAt:string
new?
optionalnew:boolean
jobApplicationLimitReached?
optionaljobApplicationLimitReached:boolean
applicantTrackingSystem?
optionalapplicantTrackingSystem:string
experienceLevel?
optionalexperienceLevel:string
JobShort
JobShort:
object
Type declaration
id
id:
string
url?
optionalurl:string
title?
optionaltitle:string
postedDate?
optionalpostedDate:string
company?
optionalcompany:CompanyShort
location?
optionallocation:object
location.linkedinText?
optionallinkedinText:string
easyApply?
optionaleasyApply:boolean
PostShort
PostShort:
object
Type declaration
id
id:
string
linkedinUrl
linkedinUrl:
string
content?
optionalcontent:string
contentAttributes
contentAttributes:
object[]
author
author:
object
author.universalName?
optionaluniversalName:string|null
author.publicIdentifier?
optionalpublicIdentifier:string|null
author.type?
optionaltype:"company"|"profile"
author.name?
optionalname:string
author.linkedinUrl?
optionallinkedinUrl:string
author.info?
optionalinfo:string
author.website?
optionalwebsite:string|null
author.websiteLabel?
optionalwebsiteLabel:string|null
author.avatar?
optionalavatar:object
author.avatar.url
url:
string
author.avatar.width
width:
number
author.avatar.height
height:
number
author.avatar.expiresAt
expiresAt:
number
article
article: {
title:string|null;subtitle:string|null;link:string|null;linkLabel:string|null;description:string|null;image:string|null; } |null
postedAt
postedAt:
object
postedAt.timestamp
timestamp:
number
postedAt.date
date:
string
postedAt.postedAgoShort
postedAgoShort:
string
postedAt.postedAgoText
postedAgoText:
string
postImages?
optionalpostImages:object[]
repostId?
optionalrepostId:string|null
repost?
optionalrepost:PostShort
repostedBy?
optionalrepostedBy:object
repostedBy.name
name:
string
repostedBy.publicIdentifier?
optionalpublicIdentifier:string
repostedBy.universalName?
optionaluniversalName:string
repostedBy.linkedinUrl
linkedinUrl:
string
newsletterUrl?
optionalnewsletterUrl:string
newsletterTitle?
optionalnewsletterTitle:string
socialContent?
optionalsocialContent:object
socialContent.hideCommentsCount
hideCommentsCount:
boolean
socialContent.hideReactionsCount
hideReactionsCount:
boolean
socialContent.hideSocialActivityCounts
hideSocialActivityCounts:
boolean
socialContent.hideShareAction
hideShareAction:
boolean
socialContent.hideSendAction
hideSendAction:
boolean
socialContent.hideRepostsCount
hideRepostsCount:
boolean
socialContent.hideViewsCount
hideViewsCount:
boolean
socialContent.hideReactAction
hideReactAction:
boolean
socialContent.hideCommentAction
hideCommentAction:
boolean
socialContent.shareUrl
shareUrl:
string
socialContent.showContributionExperience
showContributionExperience:
boolean
socialContent.showSocialDetail
showSocialDetail:
boolean
engagement?
optionalengagement:object
engagement.likes
likes:
number
engagement.comments
comments:
number
engagement.shares
shares:
number
engagement.reactions
reactions:
object[]
comments?
optionalcomments:PostComment[]
reactions?
optionalreactions:PostReaction[]
PostReaction
PostReaction:
object
Type declaration
id
id:
string
reactionType
reactionType:
string
postId
postId:
string
actor
actor:
object
actor.id
id:
string
actor.name
name:
string
actor.linkedinUrl
linkedinUrl:
string
actor.position
position:
string
actor.image
image:
object
actor.image.url
url:
string
actor.image.width
width:
number
actor.image.height
height:
number
actor.image.expiresAt
expiresAt:
number
ProfileReaction
ProfileReaction:
object
Type declaration
id
id:
string
action
action:
string
postId
postId:
string
linkedinUrl
linkedinUrl:
string
createdAt
createdAt:
string
createdAtTimestamp
createdAtTimestamp:
number
actor
actor:
object
actor.id
id:
string
actor.linkedinUrl
linkedinUrl:
string
actor.picture
picture:
string
post
post:
PostShort
PostComment
PostComment:
object
Type declaration
id
id:
string
linkedinUrl
linkedinUrl:
string
commentary
commentary:
string
createdAt
createdAt:
string
postId
postId:
string
actor
actor:
object
actor.id
id:
string
actor.name
name:
string
actor.linkedinUrl
linkedinUrl:
string
actor.position
position:
string
actor.pictureUrl
pictureUrl:
string
actor.universalName?
optionaluniversalName:string|null
actor.type
type:
"profile"|"company"
actor.picture
picture:
object
actor.picture.url
url:
string
actor.picture.width
width:
number
actor.picture.height
height:
number
actor.picture.expiresAt
expiresAt:
number
replies?
optionalreplies:PostComment[]
createdAtTimestamp
createdAtTimestamp:
number
pinned?
optionalpinned:boolean|null
contributed?
optionalcontributed:boolean|null
edited?
optionaledited:boolean|null
ScrapeLinkedinJobsParams
ScrapeLinkedinJobsParams:
object&ListingScraperConfig<JobShort,Job>
Type declaration
query
query:
SearchLinkedinJobsParams
ScrapeLinkedinCompaniesParams
ScrapeLinkedinCompaniesParams:
object&ListingScraperConfig<CompanyShort,Company>
Type declaration
query
ScrapeLinkedinProfilesParams
ScrapeLinkedinProfilesParams:
object&ListingScraperConfig<ProfileShort,Profile>
Type declaration
query
query:
SearchLinkedInProfilesParams
findEmail?
optionalfindEmail:boolean
ScrapeLinkedinSalesNavLeadsParams
ScrapeLinkedinSalesNavLeadsParams:
object&ListingScraperConfig<ProfileShort,Profile>
Type declaration
query
findEmail?
optionalfindEmail:boolean
warnPageLimit?
optionalwarnPageLimit:boolean
ScrapeLinkedinPostsParams
ScrapeLinkedinPostsParams:
object&ListingScraperConfig<PostShort,PostShort>
Type declaration
query
query:
SearchLinkedinPostsParams
ScrapeLinkedinPostReactionsParams
ScrapeLinkedinPostReactionsParams:
object&ListingScraperConfig<PostReaction,PostReaction>
Type declaration
query
ScrapeLinkedinPostCommentsParams
ScrapeLinkedinPostCommentsParams:
object&ListingScraperConfig<PostComment,PostComment>
Type declaration
query
ScrapeLinkedinPostCommentRepliesParams
ScrapeLinkedinPostCommentRepliesParams:
object&ListingScraperConfig<PostComment,PostComment>
Type declaration
query
ScrapeLinkedinProfileCommentsParams
ScrapeLinkedinProfileCommentsParams:
object&ListingScraperConfig<PostComment,PostComment>
Type declaration
query
ScrapeLinkedinProfileReactionsParams
ScrapeLinkedinProfileReactionsParams:
object&ListingScraperConfig<ProfileReaction,ProfileReaction>
Type declaration
query
ScrapeLinkedinServicesParams
ScrapeLinkedinServicesParams:
object&ListingScraperConfig<ProfileServiceShort,ProfileServiceShort&Profile>
Type declaration
query
query:
SearchLinkedinServicesParams
findEmail?
optionalfindEmail:boolean
ErrorResponse
ErrorResponse:
object
Type declaration
error
error:
string
message
message:
string
status
status:
number
LinkedInAd
LinkedInAd:
object
Type declaration
id
id:
string
variants
variants:
object[]
about
about:
object
about.format
format:
string|null
about.advertiserName
advertiserName:
string|null
about.advertiserUrl
advertiserUrl:
string|null
about.paidBy
paidBy:
string|null
about.ranFrom?
optionalranFrom:string|null
about.ranTo?
optionalranTo:string|null
impressions
impressions:
object
impressions.total?
optionaltotal:string|null
impressions.byCountry?
optionalbyCountry:object[]
targeting
targeting:
object
targeting.segments
segments:
object[]
targeting.parameters
parameters:
object[]
LinkedinAdShort
LinkedinAdShort:
object
Type declaration
id
id:
string
advertiser
advertiser:
object
advertiser.name
name:
string
advertiser.imageUrl
imageUrl:
string
advertiser.headline
headline:
string
content
content:
object
content.headline
headline:
string|null
content.commentary
commentary:
string|null
content.pageUrl
pageUrl:
string
content.imageUrl
imageUrl:
string|null
content.message?
optionalmessage:string
content.messageAuthor?
optionalmessageAuthor:string
creativeType
creativeType:
string
ApiItemResponse<TItem>
ApiItemResponse<
TItem>:BaseApiResponse&object
Type declaration
element
element:
TItem
Type Parameters
• TItem
ApiPagination
ApiPagination:
object
Type declaration
totalPages
totalPages:
number
totalElements
totalElements:
number
pageNumber
pageNumber:
number
previousElements
previousElements:
number
pageSize
pageSize:
number
paginationToken?
optionalpaginationToken:string|null
totalResultCount?
optionaltotalResultCount:number
ApiListResponse<TItem>
ApiListResponse<
TItem>:BaseApiResponse&object
Type declaration
pagination
pagination:
ApiPagination|null
elements
elements:
TItem[]
Type Parameters
• TItem
CreateConcurrentQueuesOptions
CreateConcurrentQueuesOptions:
object
Type declaration
id?
optionalid:string
