Extract comments from a LinkedIn profile
curl --request POST \
--url https://app.pipecorn.com/api/v2/intents/leads/comments \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"linkedin_profile_url": "https://www.linkedin.com/in/john-doe",
"limit": 10
}
'import requests
url = "https://app.pipecorn.com/api/v2/intents/leads/comments"
payload = {
"linkedin_profile_url": "https://www.linkedin.com/in/john-doe",
"limit": 10
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({linkedin_profile_url: 'https://www.linkedin.com/in/john-doe', limit: 10})
};
fetch('https://app.pipecorn.com/api/v2/intents/leads/comments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.pipecorn.com/api/v2/intents/leads/comments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'linkedin_profile_url' => 'https://www.linkedin.com/in/john-doe',
'limit' => 10
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.pipecorn.com/api/v2/intents/leads/comments"
payload := strings.NewReader("{\n \"linkedin_profile_url\": \"https://www.linkedin.com/in/john-doe\",\n \"limit\": 10\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.pipecorn.com/api/v2/intents/leads/comments")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"linkedin_profile_url\": \"https://www.linkedin.com/in/john-doe\",\n \"limit\": 10\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.pipecorn.com/api/v2/intents/leads/comments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"linkedin_profile_url\": \"https://www.linkedin.com/in/john-doe\",\n \"limit\": 10\n}"
response = http.request(request)
puts response.read_body{
"comments": [
{
"id": "1234567890123456789",
"comment_url": "https://www.linkedin.com/feed/update/urn:li:activity:1234567890123456789?commentUrn=urn%3Ali%3Acomment%3A%28urn%3Ali%3Aactivity%3A1234567890123456789%2C9876543210987654321%29",
"author": "John Doe",
"author_url": "https://www.linkedin.com/in/john-doe",
"comment_text": "Great point - we've been seeing the same pattern.",
"commented_at": "2026-03-11T14:17:00Z",
"urn": "urn:li:comment:(urn:li:activity:1234567890123456789,9876543210987654321)"
}
]
}{
"error": 400,
"message": "Missing required keys: linkedin_profile_url, limit"
}{
"error": 404,
"message": "LinkedIn profile not found"
}Signals
Extract comments from LinkedIn profile
Extract comments left by a LinkedIn profile on other posts. Uses the voyagerFeedDashProfileUpdates endpoint and paginates until all comments are retrieved or the requested limit is reached.
POST
/
intents
/
leads
/
comments
Extract comments from a LinkedIn profile
curl --request POST \
--url https://app.pipecorn.com/api/v2/intents/leads/comments \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"linkedin_profile_url": "https://www.linkedin.com/in/john-doe",
"limit": 10
}
'import requests
url = "https://app.pipecorn.com/api/v2/intents/leads/comments"
payload = {
"linkedin_profile_url": "https://www.linkedin.com/in/john-doe",
"limit": 10
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({linkedin_profile_url: 'https://www.linkedin.com/in/john-doe', limit: 10})
};
fetch('https://app.pipecorn.com/api/v2/intents/leads/comments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.pipecorn.com/api/v2/intents/leads/comments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'linkedin_profile_url' => 'https://www.linkedin.com/in/john-doe',
'limit' => 10
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.pipecorn.com/api/v2/intents/leads/comments"
payload := strings.NewReader("{\n \"linkedin_profile_url\": \"https://www.linkedin.com/in/john-doe\",\n \"limit\": 10\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.pipecorn.com/api/v2/intents/leads/comments")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"linkedin_profile_url\": \"https://www.linkedin.com/in/john-doe\",\n \"limit\": 10\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.pipecorn.com/api/v2/intents/leads/comments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"linkedin_profile_url\": \"https://www.linkedin.com/in/john-doe\",\n \"limit\": 10\n}"
response = http.request(request)
puts response.read_body{
"comments": [
{
"id": "1234567890123456789",
"comment_url": "https://www.linkedin.com/feed/update/urn:li:activity:1234567890123456789?commentUrn=urn%3Ali%3Acomment%3A%28urn%3Ali%3Aactivity%3A1234567890123456789%2C9876543210987654321%29",
"author": "John Doe",
"author_url": "https://www.linkedin.com/in/john-doe",
"comment_text": "Great point - we've been seeing the same pattern.",
"commented_at": "2026-03-11T14:17:00Z",
"urn": "urn:li:comment:(urn:li:activity:1234567890123456789,9876543210987654321)"
}
]
}{
"error": 400,
"message": "Missing required keys: linkedin_profile_url, limit"
}{
"error": 404,
"message": "LinkedIn profile not found"
}Extract comments left by a LinkedIn profile on other posts. This endpoint paginates through the profile’s feed activity and filters for comment-type elements, returning up to the specified limit.
Use Cases
- Surface intent signals from prospects actively engaging with relevant content
- Identify which topics a lead is commenting on to personalise outreach
- Track engagement patterns of key prospects or customers
- Enrich lead profiles with recent activity data
Parameters
Required Parameters
linkedin_profile_url: LinkedIn profile URL to extract comments from (e.g.,https://www.linkedin.com/in/mathieu-brun-picard/)limit: Maximum number of comments to extract (minimum: 1)
Response
The response includes an array of comments with the following fields:id: Numeric activity ID extracted from the URNcomment_url: Full LinkedIn URL withcommentUrnquery parameter — links directly to the commentauthor: Full name of the commenterauthor_url: LinkedIn profile URL of the commenter (query params stripped)comment_text: Text content of the commentcommented_at: ISO 8601 timestamp of when the comment was postedurn: LinkedIn URN identifying the comment (urn:li:comment:(parentActivity,commentId))
Example Request
curl --request POST \
--url https://app.pipecorn.com/api/v2/intents/leads/comments \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: your-api-key' \
--data '{
"linkedin_profile_url": "https://www.linkedin.com/in/mathieu-brun-picard/",
"limit": 10
}'
Example Response
{
"comments": [
{
"id": "7241056783920183297",
"comment_url": "https://www.linkedin.com/feed/update/urn:li:activity:7241056783920183297?commentUrn=urn%3Ali%3Acomment%3A%28urn%3Ali%3Aactivity%3A7241056783920183297%2C7241089034521346049%29",
"author": "Mathieu Brun-Picard",
"author_url": "https://www.linkedin.com/in/mathieu-brun-picard/",
"comment_text": "Great point — we've been seeing the same pattern at Pipecorn. The signal quality improves significantly once you filter by recency and engagement depth.",
"commented_at": "2025-11-20T14:17:00Z",
"urn": "urn:li:comment:(urn:li:activity:7241056783920183297,7241089034521346049)"
},
{
"id": "7238912047563218945",
"comment_url": "https://www.linkedin.com/feed/update/urn:li:activity:7238912047563218945?commentUrn=urn%3Ali%3Acomment%3A%28urn%3Ali%3Aactivity%3A7238912047563218945%2C7238945301827563521%29",
"author": "Mathieu Brun-Picard",
"author_url": "https://www.linkedin.com/in/mathieu-brun-picard/",
"comment_text": "This is exactly why we built intent signals into Pipecorn. Knowing when a prospect is actively commenting on topics relevant to your product is a game changer for outbound timing.",
"commented_at": "2025-11-17T10:44:00Z",
"urn": "urn:li:comment:(urn:li:activity:7238912047563218945,7238945301827563521)"
}
]
}
Notes
- This endpoint returns results synchronously (HTTP 200 OK) — no polling required
- Comments are detected from the profile’s feed when the share URL contains
commentUrnor/comment/, or whenparentUrn/baseUpdatefields are present on the feed element - The service paginates through the feed in pages of 20 until the limit is reached or the feed is exhausted
author_urlis returned with tracking query parameters stripped
Authorizations
Body
application/json
Response
Successfully extracted comments
Array of comments left by the LinkedIn profile
Show child attributes
Show child attributes
Was this page helpful?