---
type: "firecrawl-provider"
description: "LinkedIn posts by a member or company, post search, comments, replies, and reactions."
use_when: "LinkedIn posts by a member or company, post search, comments, replies, and reactions."
categories: "Social"
capabilities: 10
pricing: "2 credits per billed unit; see each capability for its unit and maximum."
---
# HarvestAPI on Firecrawl Alexandria

LinkedIn posts by a member or company, post search, comments, replies, and reactions.

- Categories: Social
- Category index: [Social category](https://alexandria.firecrawl.dev/agents/categories/social)
- Provider key: `harvestapi`
- Access: Firecrawl credits
- Cost (LinkedIn get reactions of linkedin post comment): 2 credits per HarvestAPI request
- Cost (LinkedIn get linkedin company posts): 2 credits per HarvestAPI request
- Cost (LinkedIn get replies of linkedin post comment): 2 credits per HarvestAPI request
- Cost (LinkedIn get comments of linkedin post): 2 credits per HarvestAPI request
- Cost (LinkedIn get linkedin post details): 2 credits per HarvestAPI request
- Cost (LinkedIn get reactions of linkedin post): 2 credits per HarvestAPI request
- Cost (LinkedIn search linkedin posts): 2 credits per HarvestAPI request
- Cost (LinkedIn get comments of linkedin profile): 2 credits per HarvestAPI request
- Cost (LinkedIn get linkedin profile posts): 2 credits per HarvestAPI request
- Cost (LinkedIn get reactions of linkedin profile): 2 credits per HarvestAPI request

## More

- [Human guide](https://www.firecrawl.dev/app/alexandria/harvestapi)
- [OpenAPI spec](https://alexandria.firecrawl.dev/agents/providers/harvestapi/openapi.json)

## Capabilities

- [LinkedIn get reactions of linkedin post comment](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/comment-reactions): A list under elements, one row per item. The response also carries pagination, status, error. Fields are the vendor's own and are passed through unchanged.
- [LinkedIn get linkedin company posts](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/company-posts): A list under elements, one row per item. The response also carries pagination, status, error, query. Fields are the vendor's own and are passed through unchanged.
- [LinkedIn get replies of linkedin post comment](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/comment-replies): A list under elements, one row per item. The response also carries pagination, status, error. Fields are the vendor's own and are passed through unchanged.
- [LinkedIn get comments of linkedin post](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/post-comments): A list under elements, one row per item. The response also carries pagination, status, error. Fields are the vendor's own and are passed through unchanged.
- [LinkedIn get linkedin post details](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/post): One object. Fields are the vendor's own and are passed through unchanged.
- [LinkedIn get reactions of linkedin post](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/post-reactions): A list under elements, one row per item. The response also carries pagination, status, error. Fields are the vendor's own and are passed through unchanged.
- [LinkedIn search linkedin posts](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/search-posts): A list under elements, one row per item. The response also carries pagination, status, error, query. Fields are the vendor's own and are passed through unchanged.
- [LinkedIn get comments of linkedin profile](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/profile-comments): A list under elements, one row per item. The response also carries pagination, status, error. Fields are the vendor's own and are passed through unchanged.
- [LinkedIn get linkedin profile posts](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/profile-posts): A list under elements, one row per item. The response also carries pagination, status, error, query. Fields are the vendor's own and are passed through unchanged.
- [LinkedIn get reactions of linkedin profile](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/profile-reactions): A list under elements, one row per item. The response also carries pagination, status, error. Fields are the vendor's own and are passed through unchanged.

## 1. Choose this provider when

LinkedIn posts by a member or company, post search, comments, replies, and reactions.

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "harvestapi",
  "capability": "linkedin/comment-reactions",
  "options": {
    "url": "<url>"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `url` (string, required): URL of the LinkedIn comment (required). Example: `<url>`
- `page` (number): Page number for pagination. Default is 1. Example: `10`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "harvestapi",
    capability: "linkedin/comment-reactions",
    options: {
      url: "<url>",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "harvestapi",
  "capability": "linkedin/comment-reactions",
  "options": {
    "url": "<url>"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "harvestapi",
    "capability": "linkedin/comment-reactions",
    "options": {
      "url": "<url>"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'harvestapi/linkedin/comment-reactions' \
  --options '{"url":"<url>"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "harvestapi",
  "capability": "linkedin/comment-reactions",
  "options": {
    "url": "<url>"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "harvestapi",
  "capability": "linkedin/comment-reactions",
  "options": {
    "url": "<url>"
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "elements": [
    {
      "id": "<id>",
      "reactionType": "<reactionType>",
      "postId": "<postId>",
      "actor": {}
    }
  ]
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### LinkedIn get reactions of linkedin post comment

- Capability: `linkedin/comment-reactions`
- Description: A list under elements, one row per item. The response also carries pagination, status, error. Fields are the vendor's own and are passed through unchanged.
- Instructions: Get reactions of LinkedIn post comment by comment URL. 4 Firecrawl credits per call, including an empty page.
- Cost: 2 credits per HarvestAPI request
- Capability file: [LinkedIn get reactions of linkedin post comment](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/comment-reactions)

Accepted options:
- `url` (string, required): URL of the LinkedIn comment (required). Example: `<url>`
- `page` (number): Page number for pagination. Default is 1. Example: `10`

Response schema example:
```json
{
  "elements": [
    {
      "id": "<id>",
      "reactionType": "<reactionType>",
      "postId": "<postId>",
      "actor": {}
    }
  ]
}
```

### LinkedIn get linkedin company posts

- Capability: `linkedin/company-posts`
- Description: A list under elements, one row per item. The response also carries pagination, status, error, query. Fields are the vendor's own and are passed through unchanged.
- Instructions: Get LinkedIn company posts by company URL, ID, or universal name. 4 Firecrawl credits per call, including an empty page.
- Cost: 2 credits per HarvestAPI request
- Capability file: [LinkedIn get linkedin company posts](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/company-posts)

Accepted options:
- `company` (string): Filter posts by this company URL or universal name or company ID. Example: `<company>`
- `companyId` (string): Filter posts by company ID. It's faster to search by ID. Example: `<companyId>`
- `companyUniversalName` (string): Filter posts by company universal name (last part in the URL). Example: `<companyUniversalName>`
- `postedLimit` (string): Filter posts by maximum posted date. Supported values: '24h', 'week', 'month'. Since LinkedIn doesn't offer a way to filter by date, the filtering will be done on our side, due to that the pagination might have incorrect values, because pagination is returned by LinkedIn without applying the postedLimit filter. Example: `<postedLimit>`
- `scrapePostedLimit` (string): Post-Filter posts by maximum posted date. Supported values: '1h', '24h', 'week','month', '3months', '6months', 'year'. This parameter will be applied after receiving results from LinkedIn, the filtering will be done on our side. Example: `<scrapePostedLimit>`
- `page` (number): Page number for pagination. Example: `10`
- `paginationToken` (string): Required if it was returned by the previous page. Otherwise the page will always be 1 (on LinkedIn side). Doesn't apply for all queries, usually profile posts return this token. Example: `<paginationToken>`

Response schema example:
```json
{
  "elements": [
    {
      "id": "<id>",
      "content": "<content>",
      "linkedinUrl": "<linkedinUrl>",
      "author": {},
      "postedAt": {},
      "postImages": [],
      "postVideo": {},
      "article": {},
      "repostId": "<repostId>",
      "repost": {},
      "repostedBy": {},
      "newsletterUrl": "<newsletterUrl>",
      "newsletterTitle": "<newsletterTitle>",
      "socialContent": {},
      "engagement": {}
    }
  ]
}
```

### LinkedIn get replies of linkedin post comment

- Capability: `linkedin/comment-replies`
- Description: A list under elements, one row per item. The response also carries pagination, status, error. Fields are the vendor's own and are passed through unchanged.
- Instructions: Get replies of LinkedIn post comment by comment URL. 4 Firecrawl credits per call, including an empty page.
- Cost: 2 credits per HarvestAPI request
- Capability file: [LinkedIn get replies of linkedin post comment](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/comment-replies)

Accepted options:
- `url` (string, required): URL of the LinkedIn comment (required). Example: `<url>`
- `paginationToken` (string): Use this token from the previous page response. Example: `<paginationToken>`

Response schema example:
```json
{
  "elements": [
    {
      "id": "<id>",
      "linkedinUrl": "<linkedinUrl>",
      "commentary": "<commentary>",
      "createdAt": "<createdAt>",
      "numComments": 0,
      "numShares": 0,
      "numImpressions": 0,
      "reactionTypeCounts": [],
      "postId": "<postId>",
      "actor": {},
      "createdAtTimestamp": 0,
      "pinned": false,
      "contributed": false,
      "edited": false
    }
  ]
}
```

### LinkedIn get comments of linkedin post

- Capability: `linkedin/post-comments`
- Description: A list under elements, one row per item. The response also carries pagination, status, error. Fields are the vendor's own and are passed through unchanged.
- Instructions: Get comments of LinkedIn post by post URL. 4 Firecrawl credits per call, including an empty page.
- Cost: 2 credits per HarvestAPI request
- Capability file: [LinkedIn get comments of linkedin post](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/post-comments)

Accepted options:
- `post` (string, required): URL of the LinkedIn post (required). Example: `<post>`
- `sortBy` (string): Sort comments by field. Supported values: 'relevance', 'date'. Example: `<sortBy>`
- `page` (number): Page number for pagination. Default is 1. Example: `10`
- `paginationToken` (string): Required only if sortBy is 'relevance' and page > 1. Use this token from the previous page response. Example: `<paginationToken>`

Response schema example:
```json
{
  "elements": [
    {
      "id": "<id>",
      "linkedinUrl": "<linkedinUrl>",
      "commentary": "<commentary>",
      "createdAt": "<createdAt>",
      "numComments": 0,
      "numShares": 0,
      "numImpressions": 0,
      "reactionTypeCounts": [],
      "postId": "<postId>",
      "actor": {},
      "createdAtTimestamp": 0,
      "pinned": false,
      "contributed": false,
      "edited": false
    }
  ]
}
```

### LinkedIn get linkedin post details

- Capability: `linkedin/post`
- Description: One object. Fields are the vendor's own and are passed through unchanged.
- Instructions: Get LinkedIn post details by post URL. 4 Firecrawl credits per call, including an empty page.
- Cost: 2 credits per HarvestAPI request
- Capability file: [LinkedIn get linkedin post details](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/post)

Accepted options:
- `url` (string, required): URL of the LinkedIn post (required). Example: `<url>`

Response schema example:
```json
{
  "element": {},
  "status": 0,
  "error": "<error>",
  "query": {}
}
```

### LinkedIn get reactions of linkedin post

- Capability: `linkedin/post-reactions`
- Description: A list under elements, one row per item. The response also carries pagination, status, error. Fields are the vendor's own and are passed through unchanged.
- Instructions: Get reactions of LinkedIn post by post URL. 4 Firecrawl credits per call, including an empty page.
- Cost: 2 credits per HarvestAPI request
- Capability file: [LinkedIn get reactions of linkedin post](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/post-reactions)

Accepted options:
- `post` (string, required): URL of the LinkedIn post (required). Example: `<post>`
- `page` (number): Page number for pagination. Default is 1. Example: `10`

Response schema example:
```json
{
  "elements": [
    {
      "id": "<id>",
      "reactionType": "<reactionType>",
      "postId": "<postId>",
      "actor": {}
    }
  ]
}
```

### LinkedIn search linkedin posts

- Capability: `linkedin/search-posts`
- Description: A list under elements, one row per item. The response also carries pagination, status, error, query. Fields are the vendor's own and are passed through unchanged.
- Instructions: Search LinkedIn posts by keywords, author, date range, and more. 4 Firecrawl credits per call, including an empty page.
- Cost: 2 credits per HarvestAPI request
- Capability file: [LinkedIn search linkedin posts](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/search-posts)

Accepted options:
- `search` (string): Keywords to search for in posts. Example: `<search>`
- `profile` (string): Filter posts by author's profile URL(s) or public identifier(s) or profile ID(s) (comma-separated). Note: LinkedIn returns fewer results per profile when using post search. To extract all posts by a profile, use the /linkedin/profile-posts endpoint. Example: `<profile>`
- `profileId` (string): Filter posts by author's profile ID or IDs (comma-separated). It's faster to search by ID. Note: LinkedIn returns fewer results per profile when using post search. To extract all posts by a profile, use the /linkedin/profile-posts endpoint. Example: `<profileId>`
- `company` (string): Filter posts by this company URL(s) or company ID(s) (comma-separated). Note: LinkedIn returns fewer results per company when using post search. To extract all posts by a company, use the /linkedin/company-posts endpoint. Example: `<company>`
- `companyId` (string): Filter posts by company ID or IDs (comma-separated). It's faster to search by ID. Note: LinkedIn returns fewer results per company when using post search. To extract all posts by a company, use the /linkedin/company-posts endpoint. Example: `<companyId>`
- `authorsCompany` (string): List of LinkedIn companies where authors of posts work (comma-separated). It supports company URLs and IDs. Example: `<authorsCompany>`
- `authorsIndustryId` (string): List of LinkedIn industry IDs of authors' companies (comma-separated). It supports industry IDs. Full list of industry IDs: https://github.com/HarvestAPI/linkedin-industry-codes-v2/blob/main/linkedin_industry_code_v2_all_eng.csv. Example: `<authorsIndustryId>`
- `mentioningMember` (string): Filter posts mentioning this LinkedIn profile URL or ID (comma-separated). It supports profile URLs and IDs. Example: `<mentioningMember>`
- `mentioningCompany` (string): Filter posts mentioning this LinkedIn company URL or ID (comma-separated). It supports company URLs and IDs. Example: `<mentioningCompany>`
- `contentType` (string): Filter by content type. Supported values: 'videos', 'images', 'live_videos', 'documents', 'collaborative_articles', 'jobs'. Example: `<contentType>`
- `authorKeywords` (string): Filter by keywords in authors' profiles. Example: `<authorKeywords>`
- `group` (string): Group LinkedIn URL or Group ID. Example: `<group>`
- `postedLimit` (string): Filter posts by maximum posted date. Supported values: '24h', 'week', 'month'. This parameter will be sent to LinkedIn, the filtering will be done on their side. Example: `<postedLimit>`
- `scrapePostedLimit` (string): Post-Filter posts by maximum posted date. Supported values: '1h', '24h', 'week','month', '3months', '6months', 'year'. This parameter will be applied after receiving results from LinkedIn, the filtering will be done on our side. Example: `<scrapePostedLimit>`
- `sortBy` (string): Sort by field. Supported values: 'relevance', 'date'. Example: `<sortBy>`
- `page` (number): Page number for pagination. Example: `10`
- `paginationToken` (string): Required if it was returned by the previous page. Otherwise the page will always be 1 (on LinkedIn side). Doesn't apply for all queries, usually profile posts return this token. Example: `<paginationToken>`

Response schema example:
```json
{
  "elements": [
    {
      "id": "<id>",
      "content": "<content>",
      "linkedinUrl": "<linkedinUrl>",
      "author": {},
      "postedAt": {},
      "postImages": [],
      "postVideo": {},
      "article": {},
      "repostId": "<repostId>",
      "repost": {},
      "repostedBy": {},
      "newsletterUrl": "<newsletterUrl>",
      "newsletterTitle": "<newsletterTitle>",
      "socialContent": {},
      "engagement": {}
    }
  ]
}
```

### LinkedIn get comments of linkedin profile

- Capability: `linkedin/profile-comments`
- Description: A list under elements, one row per item. The response also carries pagination, status, error. Fields are the vendor's own and are passed through unchanged.
- Instructions: Get the comments a LinkedIn member has written, by profile URL or profile ID. 4 Firecrawl credits per call, including an empty page.
- Cost: 2 credits per HarvestAPI request
- Capability file: [LinkedIn get comments of linkedin profile](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/profile-comments)

Accepted options:
- `profile` (string): URL of the LinkedIn profile or public identifier or profile ID. Example: `<profile>`
- `profileId` (string): Profile ID of the LinkedIn profile. It's faster to search by ID. Example: `<profileId>`
- `postedLimit` (string): Filter posts by maximum posted date. Supported values: '24h', 'week', 'month'. Example: `<postedLimit>`
- `page` (number): Page number for pagination. Default is 1. Example: `10`
- `paginationToken` (string): Required for pages > 1. Use this token from the previous page response. Example: `<paginationToken>`

Response schema example:
```json
{
  "elements": [
    {
      "id": "<id>",
      "linkedinUrl": "<linkedinUrl>",
      "commentary": "<commentary>",
      "createdAt": "<createdAt>",
      "numComments": 0,
      "numShares": 0,
      "numImpressions": 0,
      "reactionTypeCounts": [],
      "postId": "<postId>",
      "actor": {},
      "createdAtTimestamp": 0,
      "pinned": false,
      "contributed": false,
      "edited": false
    }
  ]
}
```

### LinkedIn get linkedin profile posts

- Capability: `linkedin/profile-posts`
- Description: A list under elements, one row per item. The response also carries pagination, status, error, query. Fields are the vendor's own and are passed through unchanged.
- Instructions: Get LinkedIn profile posts by profile URL, ID, or public identifier. 4 Firecrawl credits per call, including an empty page.
- Cost: 2 credits per HarvestAPI request
- Capability file: [LinkedIn get linkedin profile posts](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/profile-posts)

Accepted options:
- `profile` (string): Filter posts by author's profile URL or public identifier or profile ID. Example: `<profile>`
- `profileId` (string): Filter posts by author's profile ID. It's faster to search by ID. Example: `<profileId>`
- `profilePublicIdentifier` (string): Filter posts by author's profile public identifier (last part in the URL). Example: `<profilePublicIdentifier>`
- `postedLimit` (string): Filter posts by maximum posted date. Supported values: '24h', 'week', 'month'. Since LinkedIn doesn't offer a way to filter by date, the filtering will be done on our side, due to that the pagination might have incorrect values, because pagination is returned by LinkedIn without applying the postedLimit filter. Example: `<postedLimit>`
- `scrapePostedLimit` (string): Post-Filter posts by maximum posted date. Supported values: '1h', '24h', 'week','month', '3months', '6months', 'year'. This parameter will be applied after receiving results from LinkedIn, the filtering will be done on our side. Example: `<scrapePostedLimit>`
- `page` (number): Page number for pagination. Example: `10`
- `paginationToken` (string): Required if it was returned by the previous page. Otherwise the page will always be 1 (on LinkedIn side). Doesn't apply for all queries, usually profile posts return this token. Example: `<paginationToken>`

Response schema example:
```json
{
  "elements": [
    {
      "id": "<id>",
      "content": "<content>",
      "linkedinUrl": "<linkedinUrl>",
      "author": {},
      "postedAt": {},
      "postImages": [],
      "postVideo": {},
      "article": {},
      "repostId": "<repostId>",
      "repost": {},
      "repostedBy": {},
      "newsletterUrl": "<newsletterUrl>",
      "newsletterTitle": "<newsletterTitle>",
      "socialContent": {},
      "engagement": {}
    }
  ]
}
```

### LinkedIn get reactions of linkedin profile

- Capability: `linkedin/profile-reactions`
- Description: A list under elements, one row per item. The response also carries pagination, status, error. Fields are the vendor's own and are passed through unchanged.
- Instructions: Get the posts a LinkedIn member has reacted to, by profile URL or profile ID. 4 Firecrawl credits per call, including an empty page.
- Cost: 2 credits per HarvestAPI request
- Capability file: [LinkedIn get reactions of linkedin profile](https://alexandria.firecrawl.dev/agents/providers/harvestapi/linkedin/profile-reactions)

Accepted options:
- `profile` (string): URL of the LinkedIn profile or public identifier or profile ID. Example: `<profile>`
- `profileId` (string): Profile ID of the LinkedIn profile. It's faster to search by ID. Example: `<profileId>`
- `page` (number): Page number for pagination. Default is 1. Example: `10`
- `paginationToken` (string): Required for pages > 1. Use this token from the previous page response. Example: `<paginationToken>`

Response schema example:
```json
{
  "elements": [
    {
      "id": "<id>",
      "reactionType": "<reactionType>",
      "postId": "<postId>",
      "actor": {}
    }
  ]
}
```
