@harvestapi/scraper
Version:
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.
2,717 lines (1,414 loc) • 54.5 kB
Markdown
# 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
```bash
npm install @harvestapi/scraper
```
## Usage 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:
```JavaScript
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).
1. Optionally install SQLite (if you want to save data to SQLite):
```bash
npm i sqlite sqlite3
```
2. Use the `scrapeJobs`, `scrapeCompanies`, `scrapeProfiles`, or `scrapePosts` methods to scrape data and save it to a SQLite database or JSON file.
```JavaScript
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`](#linkedinscraper)
#### Parameters
##### options
[`ScraperOptions`](#scraperoptions)
#### Returns
[`LinkedinScraper`](#linkedinscraper)
***
### 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?
[`CreateConcurrentQueuesOptions`](#createconcurrentqueuesoptions)
#### 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?
[`CreateConcurrentQueuesOptions`](#createconcurrentqueuesoptions)
#### Returns
`AsyncFunction`\<`TArgs`, `TRes`\>
## Classes
### LinkedinScraper
#### Methods
##### getProfile()
> **getProfile**(`params`): `Promise`\<[`ApiItemResponse`](#apiitemresponsetitem)\<[`Profile`](#profile-3)\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & [`GetLinkedInProfileParams`](#getlinkedinprofileparams)
###### Returns
`Promise`\<[`ApiItemResponse`](#apiitemresponsetitem)\<[`Profile`](#profile-3)\>\>
##### getProfileId()
> **getProfileId**(`params`): `Promise`\<[`ApiItemResponse`](#apiitemresponsetitem)\<\{ `id`: `string`; \}\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & `object`
###### Returns
`Promise`\<[`ApiItemResponse`](#apiitemresponsetitem)\<\{ `id`: `string`; \}\>\>
##### searchProfiles()
> **searchProfiles**(`params`): `Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`ProfileShort`](#profileshort)\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & [`SearchLinkedInProfilesParams`](#searchlinkedinprofilesparams)
###### Returns
`Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`ProfileShort`](#profileshort)\>\>
##### getCompany()
> **getCompany**(`params`): `Promise`\<[`ApiItemResponse`](#apiitemresponsetitem)\<[`Company`](#company-4)\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & [`GetLinkedinCompanyParams`](#getlinkedincompanyparams)
###### Returns
`Promise`\<[`ApiItemResponse`](#apiitemresponsetitem)\<[`Company`](#company-4)\>\>
##### searchCompanies()
> **searchCompanies**(`params`): `Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`CompanyShort`](#companyshort)\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & [`SearchLinkedinCompaniesParams`](#searchlinkedincompaniesparams)
###### Returns
`Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`CompanyShort`](#companyshort)\>\>
##### getJob()
> **getJob**(`params`): `Promise`\<[`ApiItemResponse`](#apiitemresponsetitem)\<[`Job`](#job)\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & [`GetLinkedinJobParams`](#getlinkedinjobparams)
###### Returns
`Promise`\<[`ApiItemResponse`](#apiitemresponsetitem)\<[`Job`](#job)\>\>
##### searchJobs()
> **searchJobs**(`params`): `Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`JobShort`](#jobshort)\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & [`SearchLinkedinJobsParams`](#searchlinkedinjobsparams)
###### Returns
`Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`JobShort`](#jobshort)\>\>
##### searchPosts()
> **searchPosts**(`params`): `Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`PostShort`](#postshort)\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & [`SearchLinkedinPostsParams`](#searchlinkedinpostsparams)
###### Returns
`Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`PostShort`](#postshort)\>\>
##### getPost()
> **getPost**(`params`): `Promise`\<[`ApiItemResponse`](#apiitemresponsetitem)\<[`PostShort`](#postshort)\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & [`GetLinkedinPostParams`](#getlinkedinpostparams)
###### Returns
`Promise`\<[`ApiItemResponse`](#apiitemresponsetitem)\<[`PostShort`](#postshort)\>\>
##### getPostReactions()
> **getPostReactions**(`params`): `Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`PostReaction`](#postreaction)\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & [`GetLinkedinPostReactionsParams`](#getlinkedinpostreactionsparams)
###### Returns
`Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`PostReaction`](#postreaction)\>\>
##### getPostComments()
> **getPostComments**(`params`): `Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`PostComment`](#postcomment)\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & [`GetLinkedinPostCommentsParams`](#getlinkedinpostcommentsparams)
###### Returns
`Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`PostComment`](#postcomment)\>\>
##### getProfileComments()
> **getProfileComments**(`params`): `Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`PostComment`](#postcomment)\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & [`GetLinkedinProfileCommentsParams`](#getlinkedinprofilecommentsparams)
###### Returns
`Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`PostComment`](#postcomment)\>\>
##### getProfileReactions()
> **getProfileReactions**(`params`): `Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`ProfileReaction`](#profilereaction)\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & [`GetLinkedinProfileReactionsParams`](#getlinkedinprofilereactionsparams)
###### Returns
`Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`ProfileReaction`](#profilereaction)\>\>
##### scrapeJobs()
> **scrapeJobs**(`__namedParameters`): `Promise`\<`undefined` \| \{ `pages`: `number`; `pagesSuccess`: `number`; `items`: `number`; `itemsSuccess`: `number`; `requests`: `number`; `requestsStartTime`: `Date`; \}\>
###### Parameters
###### \_\_namedParameters
[`ScrapeLinkedinJobsParams`](#scrapelinkedinjobsparams)
###### 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
[`ScrapeLinkedinCompaniesParams`](#scrapelinkedincompaniesparams)
###### 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
[`ScrapeLinkedinProfilesParams`](#scrapelinkedinprofilesparams)
###### 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
[`ScrapeLinkedinPostsParams`](#scrapelinkedinpostsparams)
###### 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`](#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`](#scrapelinkedinpostcommentsparams)
###### 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`](#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`](#scrapelinkedinprofilereactionsparams)
###### Returns
`Promise`\<`undefined` \| \{ `pages`: `number`; `pagesSuccess`: `number`; `items`: `number`; `itemsSuccess`: `number`; `requests`: `number`; `requestsStartTime`: `Date`; \}\>
##### searchSalesNavigatorLeads()
> **searchSalesNavigatorLeads**(`params`): `Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`ProfileShort`](#profileshort)\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & [`SearchLinkedInSalesNavLeadsParams`](#searchlinkedinsalesnavleadsparams)
###### Returns
`Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`ProfileShort`](#profileshort)\>\>
##### scrapeSalesNavigatorLeads()
> **scrapeSalesNavigatorLeads**(`__namedParameters`): `Promise`\<`undefined` \| \{ `pages`: `number`; `pagesSuccess`: `number`; `items`: `number`; `itemsSuccess`: `number`; `requests`: `number`; `requestsStartTime`: `Date`; \}\>
###### Parameters
###### \_\_namedParameters
[`ScrapeLinkedinSalesNavLeadsParams`](#scrapelinkedinsalesnavleadsparams)
###### Returns
`Promise`\<`undefined` \| \{ `pages`: `number`; `pagesSuccess`: `number`; `items`: `number`; `itemsSuccess`: `number`; `requests`: `number`; `requestsStartTime`: `Date`; \}\>
##### getGroup()
> **getGroup**(`params`): `Promise`\<[`ApiItemResponse`](#apiitemresponsetitem)\<\{ `name`: `string`; `url`: `string`; \}\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & `object`
###### Returns
`Promise`\<[`ApiItemResponse`](#apiitemresponsetitem)\<\{ `name`: `string`; `url`: `string`; \}\>\>
##### searchGroups()
> **searchGroups**(`params`): `Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<\{ `name`: `string`; `url`: `string`; \}\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & `object`
###### Returns
`Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<\{ `name`: `string`; `url`: `string`; \}\>\>
##### searchServices()
> **searchServices**(`params`): `Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`ProfileServiceShort`](#profileserviceshort)\>\>
###### Parameters
###### params
[`BaseFetchParams`](#basefetchparams) & [`SearchLinkedinServicesParams`](#searchlinkedinservicesparams)
###### Returns
`Promise`\<[`ApiListResponse`](#apilistresponsetitem)\<[`ProfileServiceShort`](#profileserviceshort)\>\>
##### scrapeServices()
> **scrapeServices**(`__namedParameters`): `Promise`\<`undefined` \| \{ `pages`: `number`; `pagesSuccess`: `number`; `items`: `number`; `itemsSuccess`: `number`; `requests`: `number`; `requestsStartTime`: `Date`; \}\>
###### Parameters
###### \_\_namedParameters
[`ScrapeLinkedinServicesParams`](#scrapelinkedinservicesparams)
###### Returns
`Promise`\<`undefined` \| \{ `pages`: `number`; `pagesSuccess`: `number`; `items`: `number`; `itemsSuccess`: `number`; `requests`: `number`; `requestsStartTime`: `Date`; \}\>
## Interfaces
### BaseFetchParams
#### Properties
##### addHeaders?
> `optional` **addHeaders**: `Record`\<`string`, `string`\>
##### cookie?
> `optional` **cookie**: `string`
##### proxy?
> `optional` **proxy**: `string`
##### userAgent?
> `optional` **userAgent**: `string`
##### sessionId?
> `optional` **sessionId**: `string`
***
### GetLinkedInProfileParams
#### Properties
##### url?
> `optional` **url**: `string`
##### publicIdentifier?
> `optional` **publicIdentifier**: `string`
##### profileId?
> `optional` **profileId**: `string`
##### query?
> `optional` **query**: `string`
##### findEmail?
> `optional` **findEmail**: `boolean`
##### skipSmtp?
> `optional` **skipSmtp**: `boolean`
##### main?
> `optional` **main**: `boolean`
***
### SearchLinkedInProfilesParams
#### Properties
##### currentCompany?
> `optional` **currentCompany**: `string` \| `string`[]
##### currentCompanyId?
> `optional` **currentCompanyId**: `string` \| `string`[]
##### currentCompanyUniversalName?
> `optional` **currentCompanyUniversalName**: `string` \| `string`[]
##### pastCompany?
> `optional` **pastCompany**: `string` \| `string`[]
##### pastCompanyId?
> `optional` **pastCompanyId**: `string` \| `string`[]
##### pastCompanyUniversalName?
> `optional` **pastCompanyUniversalName**: `string` \| `string`[]
##### school?
> `optional` **school**: `string` \| `string`[]
##### schoolId?
> `optional` **schoolId**: `string` \| `string`[]
##### schoolUniversalName?
> `optional` **schoolUniversalName**: `string` \| `string`[]
##### geoId?
> `optional` **geoId**: `string` \| `string`[]
##### location?
> `optional` **location**: `string` \| `string`[]
##### industryId?
> `optional` **industryId**: `string` \| `string`[]
##### search?
> `optional` **search**: `string`
##### title?
> `optional` **title**: `string`
##### firstName?
> `optional` **firstName**: `string`
##### lastName?
> `optional` **lastName**: `string`
##### keywordsCompany?
> `optional` **keywordsCompany**: `string`
##### keywordsSchool?
> `optional` **keywordsSchool**: `string`
##### page?
> `optional` **page**: `number`
***
### SearchLinkedInSalesNavLeadsParams
#### Properties
##### currentCompanies?
> `optional` **currentCompanies**: `string` \| `string`[]
##### pastCompanies?
> `optional` **pastCompanies**: `string` \| `string`[]
##### schools?
> `optional` **schools**: `string` \| `string`[]
##### locations?
> `optional` **locations**: `string` \| `string`[]
##### geoIds?
> `optional` **geoIds**: `string` \| `string`[]
##### search?
> `optional` **search**: `string`
##### page?
> `optional` **page**: `number`
##### salesNavUrl?
> `optional` **salesNavUrl**: `string`
##### currentJobTitles?
> `optional` **currentJobTitles**: `string` \| `string`[]
##### pastJobTitles?
> `optional` **pastJobTitles**: `string` \| `string`[]
##### firstNames?
> `optional` **firstNames**: `string` \| `string`[]
##### lastNames?
> `optional` **lastNames**: `string` \| `string`[]
##### industryIds?
> `optional` **industryIds**: `string` \| `string`[]
##### yearsAtCurrentCompanyIds?
> `optional` **yearsAtCurrentCompanyIds**: `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?
> `optional` **yearsOfExperienceIds**: `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?
> `optional` **seniorityLevelIds**: `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?
> `optional` **functionIds**: `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?
> `optional` **recentlyChangedJobs**: `boolean`
##### profileLanguages?
> `optional` **profileLanguages**: `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"
}
##### excludeCurrentCompanies?
> `optional` **excludeCurrentCompanies**: `string` \| `string`[]
##### excludePastCompanies?
> `optional` **excludePastCompanies**: `string` \| `string`[]
##### excludeLocations?
> `optional` **excludeLocations**: `string` \| `string`[]
##### excludeGeoIds?
> `optional` **excludeGeoIds**: `string` \| `string`[]
##### excludeSchools?
> `optional` **excludeSchools**: `string` \| `string`[]
##### excludeCurrentJobTitles?
> `optional` **excludeCurrentJobTitles**: `string`[]
##### excludePastJobTitles?
> `optional` **excludePastJobTitles**: `string`[]
##### excludeIndustryIds?
> `optional` **excludeIndustryIds**: `string` \| `string`[]
##### excludeSeniorityLevelIds?
> `optional` **excludeSeniorityLevelIds**: `string` \| `string`[]
##### excludeFunctionIds?
> `optional` **excludeFunctionIds**: `string` \| `string`[]
***
### SearchLinkedinServicesParams
#### Properties
##### search?
> `optional` **search**: `string`
##### page?
> `optional` **page**: `number`
##### location?
> `optional` **location**: `string`
##### geoId?
> `optional` **geoId**: `string`
***
### GetLinkedinCompanyParams
#### Properties
##### universalName?
> `optional` **universalName**: `string`
##### url?
> `optional` **url**: `string`
##### companyId?
> `optional` **companyId**: `string`
##### search?
> `optional` **search**: `string`
##### query?
> `optional` **query**: `string`
##### location?
> `optional` **location**: `string`
***
### SearchLinkedinCompaniesParams
#### Properties
##### geoId?
> `optional` **geoId**: `string`
##### location?
> `optional` **location**: `string`
##### search?
> `optional` **search**: `string`
##### page?
> `optional` **page**: `number`
##### companySize?
> `optional` **companySize**: [`LinkedinCompanySize`](#linkedincompanysize) \| [`LinkedinCompanySize`](#linkedincompanysize)[]
##### industryId?
> `optional` **industryId**: `string` \| `number` \| `string`[] \| `number`[]
***
### GetLinkedinJobParams
#### Properties
##### jobId?
> `optional` **jobId**: `string`
##### url?
> `optional` **url**: `string`
##### withCompany?
> `optional` **withCompany**: `boolean`
***
### SearchLinkedinJobsParams
#### Properties
##### search?
> `optional` **search**: `string`
##### company?
> `optional` **company**: `string` \| `string`[]
##### companyId?
> `optional` **companyId**: `string` \| `string`[]
##### companyUniversalName?
> `optional` **companyUniversalName**: `string` \| `string`[]
##### location?
> `optional` **location**: `string`
##### geoId?
> `optional` **geoId**: `string`
##### sortBy?
> `optional` **sortBy**: `"date"` \| `"relevance"`
##### workplaceType?
> `optional` **workplaceType**: [`LinkedinWorkplaceType`](#linkedinworkplacetype) \| [`LinkedinWorkplaceType`](#linkedinworkplacetype)[]
##### employmentType?
> `optional` **employmentType**: [`LinkedinJobType`](#linkedinjobtype) \| [`LinkedinJobType`](#linkedinjobtype)[]
##### experienceLevel?
> `optional` **experienceLevel**: [`ExperienceLevel`](#experiencelevel-1) \| [`ExperienceLevel`](#experiencelevel-1)[]
##### under10Applicants?
> `optional` **under10Applicants**: `boolean`
##### easyApply?
> `optional` **easyApply**: `boolean`
##### postedLimit?
> `optional` **postedLimit**: `"1h"` \| `"24h"` \| `"week"` \| `"month"`
##### page?
> `optional` **page**: `number`
##### salary?
> `optional` **salary**: [`LinkedinSalaryRange`](#linkedinsalaryrange) \| [`LinkedinSalaryRange`](#linkedinsalaryrange)[]
***
### SearchLinkedinPostsParams
#### Properties
##### search?
> `optional` **search**: `string`
##### page?
> `optional` **page**: `number`
##### sortBy?
> `optional` **sortBy**: `"date"` \| `"relevance"`
##### postedLimit?
> `optional` **postedLimit**: `"24h"` \| `"week"` \| `"month"`
##### targetUrl?
> `optional` **targetUrl**: `string` \| `string`[]
##### profile?
> `optional` **profile**: `string` \| `string`[]
##### companyId?
> `optional` **companyId**: `string` \| `string`[]
##### profileId?
> `optional` **profileId**: `string` \| `string`[]
##### company?
> `optional` **company**: `string` \| `string`[]
##### companyUniversalName?
> `optional` **companyUniversalName**: `string` \| `string`[]
##### profilePublicIdentifier?
> `optional` **profilePublicIdentifier**: `string` \| `string`[]
##### authorsCompany?
> `optional` **authorsCompany**: `string` \| `string`[]
##### authorsCompanyUniversalName?
> `optional` **authorsCompanyUniversalName**: `string` \| `string`[]
##### authorsCompanyId?
> `optional` **authorsCompanyId**: `string` \| `string`[]
##### group?
> `optional` **group**: `string`
##### paginationToken?
> `optional` **paginationToken**: `null` \| `string`
***
### GetLinkedinPostParams
#### Properties
##### post?
> `optional` **post**: `string` \| `number`
##### targetUrl?
> `optional` **targetUrl**: `string`
***
### GetLinkedinPostReactionsParams
#### Properties
##### post
> **post**: `string` \| `number`
##### page?
> `optional` **page**: `number`
***
### GetLinkedinPostCommentsParams
#### Properties
##### post
> **post**: `string` \| `number`
##### page?
> `optional` **page**: `number`
##### paginationToken?
> `optional` **paginationToken**: `null` \| `string`
##### sortBy?
> `optional` **sortBy**: `"date"` \| `"relevance"`
##### postedLimit?
> `optional` **postedLimit**: `"24h"` \| `"week"` \| `"month"`
***
### GetLinkedinProfileCommentsParams
#### Properties
##### targetUrl?
> `optional` **targetUrl**: `string`
##### profile?
> `optional` **profile**: `string`
##### profileId?
> `optional` **profileId**: `string`
##### profilePublicIdentifier?
> `optional` **profilePublicIdentifier**: `string`
##### company?
> `optional` **company**: `string`
##### companyId?
> `optional` **companyId**: `string`
##### companyUniversalName?
> `optional` **companyUniversalName**: `string`
##### page?
> `optional` **page**: `number`
##### paginationToken?
> `optional` **paginationToken**: `null` \| `string`
##### postedLimit?
> `optional` **postedLimit**: `"24h"` \| `"week"` \| `"month"`
***
### GetLinkedinProfileReactionsParams
#### Properties
##### targetUrl?
> `optional` **targetUrl**: `string`
##### profile?
> `optional` **profile**: `string`
##### profileId?
> `optional` **profileId**: `string`
##### profilePublicIdentifier?
> `optional` **profilePublicIdentifier**: `string`
##### company?
> `optional` **company**: `string`
##### companyId?
> `optional` **companyId**: `string`
##### companyUniversalName?
> `optional` **companyUniversalName**: `string`
##### page?
> `optional` **page**: `number`
##### paginationToken?
> `optional` **paginationToken**: `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?
> `optional` **user**: `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?
> `optional` **outputType**: `"json"` \| `"sqlite"` \| `"callback"`
##### outputDir?
> `optional` **outputDir**: `string`
##### filename?
> `optional` **filename**: `string`
##### tableName?
> `optional` **tableName**: `string`
Table name for SQLite output.
##### scrapeDetails?
> `optional` **scrapeDetails**: `boolean`
Whether to make an additional request for each item details.
###### Default
```ts
true
```
##### keepScrapingIfAllSkippedOnPage?
> `optional` **keepScrapingIfAllSkippedOnPage**: `boolean`
Whether to keep scraping further pages if all items on the current page were skipped.
###### Default
```ts
false
```
##### onItemScraped()?
> `optional` **onItemScraped**: (`args`) => `any`
###### Parameters
###### args
`object` & `Partial`\<[`ApiItemResponse`](#apiitemresponsetitem)\<`TItemShot` \| `TItemDetails`\>\>
###### Returns
`any`
##### onFirstPageFetched()?
> `optional` **onFirstPageFetched**: (`args`) => `any`
###### Parameters
###### args
###### data
[`ApiListResponse`](#apilistresponsetitem)\<`TItemShot`\> \| `null`
###### Returns
`any`
##### onPageFetched()?
> `optional` **onPageFetched**: (`args`) => `Promise`\<\{ `doneAll`: `boolean`; `donePages`: `boolean`; \} \| `void`\> \| \{ `doneAll`: `boolean`; `donePages`: `boolean`; \} \| `void`
###### Parameters
###### args
###### page
`number`
###### data
[`ApiListResponse`](#apilistresponsetitem)\<`TItemShot`\> \| `null`
###### Returns
`Promise`\<\{ `doneAll`: `boolean`; `donePages`: `boolean`; \} \| `void`\> \| \{ `doneAll`: `boolean`; `donePages`: `boolean`; \} \| `void`
##### overrideConcurrency?
> `optional` **overrideConcurrency**: `number`
##### overridePageConcurrency?
> `optional` **overridePageConcurrency**: `number`
##### maxItems?
> `optional` **maxItems**: `number`
##### disableLog?
> `optional` **disableLog**: `boolean`
##### disableErrorLog?
> `optional` **disableErrorLog**: `boolean`
##### optionsOverride?
> `optional` **optionsOverride**: `Partial`\<`ListingScraperOptions`\<`TItemShot`, `TItemDetails`\>\>
##### sessionId?
> `optional` **sessionId**: `string`
##### addListingHeaders?
> `optional` **addListingHeaders**: `Record`\<`string`, `string`\>
##### addItemHeaders?
> `optional` **addItemHeaders**: `Record`\<`string`, `string`\>
##### takePages?
> `optional` **takePages**: `number`
##### startPage?
> `optional` **startPage**: `number`
##### getFetchListParams()?
> `optional` **getFetchListParams**: (`args`) => `Record`\<`string`, `any`\>
###### Parameters
###### args
###### page
`number`
###### pagination
[`ApiPagination`](#apipagination) \| `null`
###### Returns
`Record`\<`string`, `any`\>
***
### ScraperOptions
> **ScraperOptions**: `object`
#### Type declaration
##### apiKey
> **apiKey**: `string`
##### baseUrl?
> `optional` **baseUrl**: `string`
##### addHeaders?
> `optional` **addHeaders**: `Record`\<`string`, `string`\>
##### logger?
> `optional` **logger**: `object`
###### logger.log()
> **log**: (...`args`) => `void`
###### Parameters
###### args
...`any`[]
###### Returns
`void`
###### logger.error()
> **error**: (...`args`) => `void`
###### Parameters
###### args
...`any`[]
###### Returns
`void`
***
### 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"`
***
### 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?
> `optional` **name**: `string`
##### position?
> `optional` **position**: `string`
##### location?
> `optional` **location**: `object`
###### location.linkedinText?
> `optional` **linkedinText**: `string`
##### linkedinUrl?
> `optional` **linkedinUrl**: `string`
##### photo?
> `optional` **photo**: `string`
##### hidden?
> `optional` **hidden**: `boolean`
***
### ProfileServiceShort
> **ProfileServiceShort**: `object`
#### Type declaration
##### id
> **id**: `string`
##### name?
> `optional` **name**: `string`
##### position?
> `optional` **position**: `string`
##### location?
> `optional` **location**: `object`
###### location.linkedinText?
> `optional` **linkedinText**: `string`
##### linkedinProfileUrl?
> `optional` **linkedinProfileUrl**: `string`
##### picture?
> `optional` **picture**: `string`
##### services
> **services**: `string`[]
##### summary?
> `optional` **summary**: `string`
##### objectUrn
> **objectUrn**: `string`
***
### Company
> **Company**: `object`
#### Type declaration
##### id
> **id**: `string`
##### universalName
> **universalName**: `string`
##### name?
> `optional` **name**: `string`
##### tagline?
> `optional` **tagline**: `string`
##### website?
> `optional` **website**: `string`
##### linkedinUrl?
> `optional` **linkedinUrl**: `string`
##### logo?
> `optional` **logo**: `string`
##### foundedOn?
> `optional` **foundedOn**: `object`
###### foundedOn.month?
> `optional` **month**: `string` \| `null`
###### foundedOn.year?
> `optional` **year**: `number`
###### foundedOn.day?
> `optional` **day**: `string` \| `null`
##### employeeCount?
> `optional` **employeeCount**: `number`
##### employeeCountRange?
> `optional` **employeeCountRange**: `object`
###### employeeCountRange.start?
> `optional` **start**: `number`
###### employeeCountRange.end?
> `optional` **end**: `number`
##### followerCount?
> `optional` **followerCount**: `number`
##### description?
> `optional` **description**: `string`
##### locations?
> `optional` **locations**: `object`[]
##### specialities?
> `optional` **specialities**: `string`[]
##### industries?
> `optional` **industries**: `object`[]
##### logos?
> `optional` **logos**: `object`[]
##### backgroundCovers?
> `optional` **backgroundCovers**: `object`[]
##### active?
> `optional` **active**: `boolean`
##### jobSearchUrl?
> `optional` **jobSearchUrl**: `string`
##### phone?
> `optional` **phone**: `object`
###### phone.number
> **number**: `string`
###### phone.extension?
> `optional` **extension**: `string` \| `null`
##### crunchbaseFundingData?
> `optional` **crunchbaseFundingData**: `object`
###### crunchbaseFundingData.numberOfFundingRounds?
> `optional` **numberOfFundingRounds**: `number`
###### crunchbaseFundingData.lastFundingRound?
> `optional` **lastFundingRound**: `object`
###### crunchbaseFundingData.lastFundingRound.localizedFundingType?
> `optional` **localizedFundingType**: `string`
###### crunchbaseFundingData.lastFundingRound.leadInvestors?
> `optional` **leadInvestors**: `Record`\<`string`, `never`\>[]
###### crunchbaseFundingData.lastFundingRound.moneyRaised?
> `optional` **moneyRaised**: `object`
###### crunchbaseFundingData.lastFundingRound.moneyRaised.amount?
> `optional` **amount**: `string`
###### crunchbaseFundingData.lastFundingRound.moneyRaised.currencyCode?
> `optional` **currencyCode**: `string`
###### crunchbaseFundingData.lastFundingRound.fundingRoundUrl?
> `optional` **fundingRoundUrl**: `string`
###### crunchbaseFundingData.lastFundingRound.announcedOn?
> `optional` **announcedOn**: `object`
###### crunchbaseFundingData.lastFundingRound.announcedOn.month?
> `optional` **month**: `number`
###### crunchbaseFundingData.lastFundingRound.announcedOn.year?
> `optional` **year**: `number`
###### crunchbaseFundingData.lastFundingRound.announcedOn.day?
> `optional` **day**: `number`
###### crunchbaseFundingData.lastFundingRound.numberOfOtherInvestors?
> `optional` **numberOfOtherInvestors**: `number`
###### crunchbaseFundingData.lastFundingRound.investorsUrl?
> `optional` **investorsUrl**: `string`
###### crunchbaseFundingData.organizationUrl?
> `optional` **organizationUrl**: `string`
###### crunchbaseFundingData.updatedAt?
> `optional` **updatedAt**: `number`
###### crunchbaseFundingData.fundingRoundsUrl?
> `optional` **fundingRoundsUrl**: `string`
##### pageVerified?
> `optional` **pageVerified**: `boolean`
##### similarOrganizations?
> `optional` **similarOrganizations**: [`CompanyShort`](#companyshort)[]
***
### CompanyShort
> **CompanyShort**: `object`
#### Type declaration
##### id
> **id**: `string`
##### universalName
> **universalName**: `string`
##### linkedinUrl
> **linkedinUrl**: `string`
##### name?
> `optional` **name**: `string`
##### industries?
> `optional` **industries**: `string`
##### location?
> `optional` **location**: `object`
###### location.linkedinText?
> `optional` **linkedinText**: `string`
##### followers?
> `optional` **followers**: `string`
##### summary?
> `optional` **summary**: `string`
##### logo?
> `optional` **logo**: `string`
***
### Job
> **Job**: `object`
#### Type declaration
##### id
> **id**: `string`
##### title?
> `optional` **title**: `string`
##### url?
> `optional` **url**: `string`
##### jobState?
> `optional` **jobState**: `string`
##### postedDate?
> `optional` **postedDate**: `string`
##### descriptionText?
> `optional` **descriptionText**: `string`
##### descriptionHtml?
> `optional` **descriptionHtml**: `string`
##### location?
> `optional` **location**: `object`
###### location.linkedinText?
> `optional` **linkedinText**: `string`
###### location.postalAddress?
> `optional` **postalAddress**: `string` \| `null`
###### location.parsed?
> `optional` **parsed**: `object`
###### location.parsed.text?
> `optional` **text**: `string`
###### location.parsed.countryCode?
> `optional` **countryCode**: `string`
###### location.parsed.regionCode?
> `optional` **regionCode**: `string` \| `null`
###### location.parsed.country?
> `optional` **country**: `string`
###### location.parsed.countryFull?
> `optional` **countryFull**: `string`
###### location.parsed.state?
> `optional` **state**: `string`
###### location.parsed.city?
> `optional` **city**: `string`
##### employmentType?
> `optional` **employmentType**: `"full_time"` \| `"part_time"` \| `"contract"` \| `"internship"`
##### workplaceType?
> `optional` **workplaceType**: `"on_site"` \| `"hybrid"` \| `"remote"`
##### workRemoteAllowed?
> `optional` **workRemoteAllowed**: `boolean`
##### easyApplyUrl?
> `optional` **easyApplyUrl**: `string`
##### applicants?
> `optional` **applicants**: `number`
##### company
> **company**: [`Company`](#company-4)
##### salary
> **salary**: \{ `text`: `string`; `min`: `number`; `max`: `number`; `currency`: `string`; `payPeriod`: `string`; `compensationType`: `string`; `compensationSource`: `string`; `providedByEmployer`: `boolean`; \} \| `null`
##### views?
> `optional` **views**: `number`
##### expireAt?
> `optional` **expireAt**: `string`
##### new?
> `optional` **new**: `boolean`
##### jobApplicationLimitReached?
> `optional` **jobApplicationLimitReached**: `boolean`
##### applicantTrackingSystem?
> `optional` **applicantTrackingSystem**: `string`
##### experienceLevel?
> `optional` **experienceLevel**: `string`
***
### JobShort
> **JobShort**: `object`
#### Type declaration
##### id
> **id**: `string`
##### url?
> `optional` **url**: `string`
##### title?
> `optional` **title**: `string`
##### postedDate?
> `optional` **postedDate**: `string`
##### company?
> `optional` **company**: [`CompanyShort`](#companyshort)
##### location?
> `optional` **location**: `object`
###### location.linkedinText?
> `optional` **linkedinText**: `string`
##### easyApply?
> `optional` **easyApply**: `boolean`
***
### PostShort
> **PostShort**: `object`
#### Type declaration
##### id
> **id**: `string`
##### linkedinUrl
> **linkedinUrl**: `string`
##### content?
> `optional` **content**: `string`
##### contentAttributes
> **contentAttributes**: `object`[]
##### author
> **author**: `object`
###### author.universalName?
> `optional` **universalName**: `string` \| `null`
###### author.publicIdentifier?
> `optional` **publicIdentifier**: `string` \| `null`
###### author.type?
> `optional` **type**: `"company"` \| `"profile"`
###### author.name?
> `optional` **name**: `string`
###### author.linkedinUrl?
> `optional` **linkedinUrl**: `string`
###### author.info?
> `optional` **info**: `string`
###### author.website?
> `optional` **website**: `string` \| `null`
###### author.websiteLabel?
> `optional` **websiteLabel**: `string` \| `null`
###### author.avatar?
> `optional` **avatar**: `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?
> `optional` **postImages**: `object`[]
##### repostId?
> `optional` **repostId**: `string` \| `null`
##### repost?
> `optional` **repost**: [`PostShort`](#postshort)
##### repostedBy?
> `optional` **repostedBy**: `object`
###### repostedBy.name
> **name**: `string`
###### repostedBy.publicIdentifier?
> `optional` **publicIdentifier**: `string`
###### repostedBy.universalName?
> `optional` **universalName**: `string`
###### repostedBy.linkedinUrl
> **linkedinUrl**: `string`
##### newsletterUrl?
> `optional` **newsletterUrl**: `string`
##### newsletterTitle?
> `optional` **newsletterTitle**: `string`
##### socialContent?
> `optional` **socialContent**: `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?
> `optional` **engagement**: `object`
###### engagement.likes
> **likes**: `number`
###### engagement.comments
> **comments**: `number`
###### engagement.shares
> **shares**: `number`
###### engagement.reactions
> **reactions**: `object`[]
##### comments?
> `optional` **comments**: [`PostComment`](#postcomment)[]
##### reactions?
> `optional` **reactions**: [`PostReaction`](#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`](#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?
> `optional` **universalName**: `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?
> `optional` **replies**: [`PostComment`](#postcomment)[]
##### createdAtTimestamp
> **createdAtTimestamp**: `number`
##### pinned?
> `optional` **pinned**: `boolean` \| `null`
##### contributed?
> `optional` **contributed**: `boolean` \| `null`
##### edited?
> `optional` **edited**: `boolean` \| `null`
***
### ScrapeLinkedinJobsParams
> **ScrapeLinkedinJobsParams**: `object` & [`ListingScraperConfig`](#listingscraperconfigtitemshot-titemdetails)\<[`JobShort`](#jobshort), [`Job`](#job)\>
#### Type declaration
##### query
> **query**: [`SearchLinkedinJobsParams`](#searchlinkedinjobsparams)
***
### ScrapeLinkedinCompaniesParams
> **ScrapeLinkedinCompaniesParams**: `object` & [`ListingScraperConfig`](#listingscraperconfigtitemshot-titemdetails)\<[`CompanyShort`](#companyshort), [`Company`](#company-4)\>
#### Type declarati