In a nutshell: The Rodz API exposes three enrichment endpoints for pulling social content and job data directly from LinkedIn:
profile-posts,company-posts, andcompany-jobs. Unlike intent-based monitoring, which pushes events to you, these endpoints work on demand. You send a LinkedIn URL, you get structured data back. This guide covers all three endpoints with cURL examples, response schemas, rate-limit considerations, and a strategy section on folding this data into sales and marketing workflows.
What Are Social Content Endpoints?
Most Rodz API guides on this blog cover signals, events that fire when something changes. Social content endpoints are different. They’re enrichment endpoints: you call them when you need data, and they return it synchronously. No webhook, no configuration, no threshold to define. You make a POST request, the API fetches the data, and you get a JSON response.
The three endpoints in this guide share a common purpose: extracting publicly visible LinkedIn content and turning it into structured, queryable data. Profile posts give you what a person has published. Company posts give you what an organization has published. Company jobs give you the open positions a company is advertising on LinkedIn right now.
For B2B teams, this data is useful in a few concrete ways. It provides context for outreach: knowing what a prospect just posted about lets you write a message that feels relevant rather than generic. It also feeds content analysis at scale, so if you’re tracking the posts of 500 decision-makers in your ICP, you can spot recurring pain points and build content that actually lands. And job listings reveal hiring intent, budget allocation, and technology choices without waiting for a signal to fire.
This guide assumes you already have a working API key. If not, start with Getting Started: Authentication and Your First Request.
Prerequisites
Before calling these endpoints, make sure you have the following ready:
- A Rodz account with API access enabled. All paid plans include API access.
- Your API key, generated from the Rodz dashboard under Settings > API Keys. See the authentication guide if you need help.
- cURL installed on your machine. macOS and Linux include it by default. Windows users can use Git Bash or WSL.
- LinkedIn URLs for the profiles or companies you want to query. The endpoints accept standard LinkedIn profile URLs (
linkedin.com/in/...) and company page URLs (linkedin.com/company/...). - Basic familiarity with REST APIs and JSON. No SDK or library required.
Set your API key as an environment variable so the examples stay clean:
export RODZ_API_KEY="your_api_key_here"
All examples use the base URL https://api.rodz.io/v1. For rate limits, pagination details, and error codes, refer to the full API reference.
Endpoint 1: Profile Posts
What It Returns
The POST /enrich/profile-posts endpoint returns the recent posts published by a specific LinkedIn profile. Each post in the response includes the text content, publication date, engagement metrics (likes, comments, shares), any media attachments (images, documents, video thumbnails), and the post URL.
Posts come back in reverse chronological order. By default you get the 20 most recent, but pagination parameters let you fetch more. Content is returned as plain text with line breaks preserved, which makes it straightforward to parse and analyze programmatically.
This endpoint only returns posts authored by the profile owner. Reposts are included but flagged separately, so you can filter them out if you only want original content.
When to Use It
Profile posts are most useful for these scenarios:
- Pre-call research. Before a sales call, pull the prospect’s recent posts to find talking points. If they just wrote about a challenge your product solves, that’s your opening.
- Content-driven lead scoring. A decision-maker who frequently posts about topics related to your solution is more likely to be receptive. Score leads higher when their content matches your value proposition.
- Influencer identification. Pull posts from everyone in a target account and rank by engagement. The person with the most likes and comments is the internal influencer, and often the best first contact.
- Competitor analysis. Monitor what executives at competing companies are posting about. Their content themes often telegraph product direction and positioning shifts before anything shows up in a press release.
cURL Example
curl -X POST https://api.rodz.io/v1/enrich/profile-posts \
-H "Authorization: Bearer $RODZ_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"linkedin_url": "https://www.linkedin.com/in/example-profile",
"limit": 10
}'
Response Schema
{
"status": "success",
"data": {
"profile": {
"linkedin_url": "https://www.linkedin.com/in/example-profile",
"full_name": "Jane Doe",
"headline": "VP of Sales at Acme Corp"
},
"posts": [
{
"post_id": "urn:li:activity:7100000000000000001",
"post_url": "https://www.linkedin.com/feed/update/urn:li:activity:7100000000000000001",
"published_at": "2026-03-01T09:14:00Z",
"content": "We just closed our biggest quarter ever...",
"is_repost": false,
"media": [
{
"type": "image",
"url": "https://media.licdn.com/..."
}
],
"engagement": {
"likes": 342,
"comments": 58,
"shares": 27
}
}
],
"pagination": {
"total": 87,
"limit": 10,
"offset": 0,
"has_more": true
}
}
}
Key Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
linkedin_url | string | Yes | The full LinkedIn profile URL |
limit | integer | No | Number of posts to return (default: 20, max: 50) |
offset | integer | No | Pagination offset for fetching older posts |
include_reposts | boolean | No | Whether to include reposts (default: true) |
Practical Tips
Keep limit low for pre-call research. Ten posts gives you more than enough context. Save higher limits for bulk analysis workflows where you’re building a content profile across weeks or months.
If you’re enriching a large list of prospects, stagger your requests to stay within rate limits. The API allows 100 requests per minute. For a list of 500 profiles, batch them in groups of 80-90 with a 60-second pause between batches.
The engagement object is useful for filtering noise. A post with 300 likes carries more weight than one with 2. When building pre-call briefs, sort by engagement first.
Endpoint 2: Company Posts
What It Returns
The POST /enrich/company-posts endpoint returns the recent posts published on a company’s LinkedIn page. The response structure mirrors the profile-posts endpoint but includes company-level metadata instead of personal profile data. Each post contains the text content, publication date, engagement metrics, media attachments, and the direct post URL.
Company posts include all content published by page administrators: product announcements, blog shares, event promotions, hiring updates, customer stories, and thought leadership pieces. Sponsored posts are excluded since those are only visible in LinkedIn’s ad platform.
When to Use It
Company posts serve different purposes than profile posts:
- Account research at scale. Before launching an ABM campaign targeting 200 companies, pull their recent posts to understand positioning, product focus, and messaging tone. This informs ad copy, landing pages, and outreach sequences.
- Detecting product launches and updates. When a company announces a new feature or product on LinkedIn, it often signals a shift in priorities. If that shift matches what you sell, the timing is right.
- Tracking company culture and values. Posts about awards, team events, and culture initiatives reveal what a company cares about. That context makes outreach feel less like a template.
- Monitoring existing customers. If you already work with a company, their public posts can surface expansion opportunities, new departments, or strategic pivots that create upsell potential.
cURL Example
curl -X POST https://api.rodz.io/v1/enrich/company-posts \
-H "Authorization: Bearer $RODZ_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"linkedin_url": "https://www.linkedin.com/company/example-company",
"limit": 15
}'
Response Schema
{
"status": "success",
"data": {
"company": {
"linkedin_url": "https://www.linkedin.com/company/example-company",
"name": "Acme Corp",
"industry": "SaaS",
"employee_count": 250
},
"posts": [
{
"post_id": "urn:li:activity:7100000000000000045",
"post_url": "https://www.linkedin.com/feed/update/urn:li:activity:7100000000000000045",
"published_at": "2026-03-02T14:30:00Z",
"content": "Excited to announce the launch of our new analytics dashboard...",
"is_repost": false,
"media": [
{
"type": "video",
"url": "https://media.licdn.com/...",
"thumbnail_url": "https://media.licdn.com/..."
}
],
"engagement": {
"likes": 189,
"comments": 34,
"shares": 12
}
}
],
"pagination": {
"total": 214,
"limit": 15,
"offset": 0,
"has_more": true
}
}
}
Key Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
linkedin_url | string | Yes | The full LinkedIn company page URL |
limit | integer | No | Number of posts to return (default: 20, max: 50) |
offset | integer | No | Pagination offset for fetching older posts |
Practical Tips
Company posts tend to follow a cadence. Most active LinkedIn company pages post between two and five times per week. Setting limit to 15 typically covers the last two to three weeks of content, which is enough for account research.
Pay attention to engagement ratios. A company with 5,000 followers whose posts regularly get 500 likes has a highly engaged audience. That 10% engagement rate is exceptional and usually correlates with a strong brand presence. Companies with that kind of traction are often growing fast and spending on tools to support it.
Cross-reference company posts with profile posts from key executives. When the CEO and the company page are posting about the same theme in the same week, that’s a coordinated messaging push, which means it’s a strategic priority.
Endpoint 3: Company Jobs
What It Returns
The POST /enrich/company-jobs endpoint returns the active job listings a company has published on LinkedIn. Each listing includes the job title, department, seniority level, location, employment type (full-time, contract, etc.), the posting date, and a direct URL to the LinkedIn job listing.
Unlike the job-offers signal covered in the HR signals guide, this isn’t a monitoring tool. It doesn’t fire events or push webhooks. It gives you a snapshot of a company’s current open positions at the moment you call it. You ask for the data, you get it back immediately.
The API normalizes job titles so that variations like “Senior Software Engineer,” “Sr. Software Eng.,” and “Senior SWE” map to consistent categories. It also tags each listing with a standardized department (Engineering, Sales, Marketing, HR, Operations, etc.) and seniority level (Entry, Mid, Senior, Lead, Director, VP, C-Suite).
When to Use It
Company jobs data is useful for both sales intelligence and competitive analysis:
- Identifying technology needs. Job descriptions often list the tools a company uses. If a company is hiring a “Salesforce Administrator,” they use Salesforce. If they’re hiring a “HubSpot Marketing Manager,” they use HubSpot. Parse the descriptions to map a company’s tech stack.
- Gauging team size and budget. A company posting 15 engineering roles is investing heavily in product. A company posting 8 sales roles is scaling its go-to-market motion. Both patterns tell you where budget is flowing.
- Timing outreach around new hires. A newly posted VP of Marketing role means a new marketing leader will join in 2-3 months. New leaders evaluate tools. That’s the window.
- Feeding ABM targeting. Filter companies by the departments they’re hiring for. If you sell to marketing teams, target companies with 3+ open marketing roles. They’re building the team and will need tools to support it.
cURL Example
curl -X POST https://api.rodz.io/v1/enrich/company-jobs \
-H "Authorization: Bearer $RODZ_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"linkedin_url": "https://www.linkedin.com/company/example-company",
"limit": 25
}'
Response Schema
{
"status": "success",
"data": {
"company": {
"linkedin_url": "https://www.linkedin.com/company/example-company",
"name": "Acme Corp",
"industry": "SaaS",
"employee_count": 250
},
"jobs": [
{
"job_id": "3900000001",
"title": "Senior Backend Engineer",
"normalized_title": "Senior Software Engineer",
"department": "Engineering",
"seniority": "Senior",
"location": "Paris, France",
"employment_type": "Full-time",
"posted_at": "2026-02-28T08:00:00Z",
"job_url": "https://www.linkedin.com/jobs/view/3900000001",
"description_snippet": "We are looking for a Senior Backend Engineer to join our platform team. You will work on high-throughput data pipelines..."
},
{
"job_id": "3900000002",
"title": "Account Executive - EMEA",
"normalized_title": "Account Executive",
"department": "Sales",
"seniority": "Mid",
"location": "London, United Kingdom",
"employment_type": "Full-time",
"posted_at": "2026-03-01T10:00:00Z",
"job_url": "https://www.linkedin.com/jobs/view/3900000002",
"description_snippet": "Join our growing sales team to drive expansion across the EMEA region..."
}
],
"pagination": {
"total": 42,
"limit": 25,
"offset": 0,
"has_more": true
}
}
}
Key Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
linkedin_url | string | Yes | The full LinkedIn company page URL |
limit | integer | No | Number of job listings to return (default: 20, max: 100) |
offset | integer | No | Pagination offset for additional listings |
department | string | No | Filter by department (e.g., “Engineering”, “Sales”, “Marketing”) |
seniority | string | No | Filter by seniority level (e.g., “Senior”, “Director”, “VP”) |
Practical Tips
The department and seniority filters are useful for targeted prospecting. If you sell developer tools, filter for Engineering roles at Senior level and above. You’ll get a focused list of companies actively scaling their engineering team with experienced hires, which usually means they’re investing in better tooling.
Use the description_snippet field to extract technology keywords. Even the short snippet often contains tool names, framework preferences, and methodology references. For a deeper look, follow up with the full job listing URL.
Compare a company’s job count over time by calling this endpoint weekly. If a company goes from 10 open roles to 40 in a month, something changed. That kind of hiring acceleration is one of the clearer signals of growth and budget availability.
Building a Content Intelligence Strategy
These three endpoints work best together. Here’s a practical workflow for a B2B sales or marketing team.
Step 1: Build Your Target List
Start with a list of 100-200 companies in your ICP. You likely have this in your CRM already. Export the LinkedIn company URLs. For key accounts, also export the LinkedIn profile URLs of 2-3 decision-makers per company.
Step 2: Pull Company Posts and Jobs Weekly
Set up a weekly script (cron job, Make scenario, or a simple Python script) that calls company-posts and company-jobs for every company on your list. Store the results in a database or spreadsheet.
# Example: loop through a list of company URLs
while IFS= read -r url; do
curl -s -X POST https://api.rodz.io/v1/enrich/company-posts \
-H "Authorization: Bearer $RODZ_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"linkedin_url\": \"$url\", \"limit\": 5}" >> company_posts_results.json
sleep 1
done < company_urls.txt
Step 3: Pull Profile Posts Before Outreach
When a company moves to the outreach stage because their job data or company posts flagged something interesting, pull the recent posts of your target contacts. Use the engagement metrics and content themes to personalize your first message.
Step 4: Score and Prioritize
Combine data from all three endpoints into a scoring model:
- +10 points if the company posted about a topic related to your solution in the last 30 days.
- +15 points if they have open roles in the department you sell to.
- +20 points if a decision-maker posted about a pain point your product addresses.
- +5 points per open job in a relevant department (capped at 25).
Sort your target list by score. The companies at the top are the ones where your outreach will feel timely and grounded in something real.
Step 5: Combine with Signals
These enrichment endpoints work best alongside Rodz signal monitoring. Use the HR signals to get real-time alerts when a company publishes a new job or a key executive changes roles. Then use the enrichment endpoints to pull the full context before reaching out. Signals tell you when to act. Enrichment endpoints tell you what to say.
Error Handling
All three endpoints share the same error response format. Here are the most common scenarios:
| HTTP Status | Error Code | Meaning |
|---|---|---|
| 400 | invalid_url | The linkedin_url parameter is missing or malformed |
| 401 | unauthorized | Invalid or expired API key |
| 404 | profile_not_found | No LinkedIn profile or company matches the URL |
| 429 | rate_limited | You exceeded 100 requests per minute |
| 500 | internal_error | Server-side issue. Retry after a few seconds |
When you receive a 429 response, the Retry-After header tells you how many seconds to wait before sending another request. Build retry logic into your scripts to handle this cleanly.
For a complete breakdown of error codes and best practices for handling them, see the API reference guide.
Frequently Asked Questions
How fresh is the data returned by these endpoints?
The API caches data briefly to optimize performance. Profile posts and company posts are refreshed at least every 6 hours. Company jobs are refreshed at least every 12 hours. If a post was published 30 minutes ago, it might not appear in the response yet, but it’ll be available within a few hours.
Can I pull posts from private LinkedIn profiles?
No. The API only returns content that’s publicly visible on LinkedIn. If a profile has restricted visibility settings, the API may return fewer posts or none at all. The response will still return a 200 status with an empty posts array, not an error.
Is there a limit on how many posts or jobs I can retrieve per request?
Yes. Profile posts and company posts have a maximum limit of 50 per request. Company jobs allows up to 100 per request. If a profile or company has more content than the limit, use the offset parameter to paginate through results. The pagination object in every response tells you the total count and whether more records are available.
How do these endpoints differ from the intent-based monitoring?
Signals are event-driven. You configure them once, and the API pushes notifications to your webhook whenever a matching event occurs (a new job posting, a spike in engagement, etc.). Enrichment endpoints are request-driven. You call them when you need data, and they respond immediately. Many teams use both: signals to identify when to engage, enrichment endpoints to gather context for how to engage.
Do these endpoints count against my rate limit?
Yes. All three endpoints share the same global rate limit of 100 requests per minute per API key. Each POST request counts as one request, regardless of the limit parameter you set. If you’re running batch operations across hundreds of profiles or companies, pace your requests and implement exponential backoff for 429 responses.
Can I filter company posts by topic or keyword?
Not directly at the API level. The endpoint returns all recent posts, and filtering happens on your side. The structured text content makes it straightforward to implement keyword matching or basic NLP classification in your pipeline. If you only care about posts mentioning “AI” or “funding,” a simple string search on the content field works well for most use cases.
What LinkedIn URL format should I use?
Use the canonical format: https://www.linkedin.com/in/firstname-lastname for profiles and https://www.linkedin.com/company/company-name for company pages. The API also accepts URLs with trailing slashes, locale prefixes, and query parameters. It strips those automatically and resolves to the correct entity. Vanity URLs and numeric IDs both work.
Can I combine company-jobs data with the HR signals?
Yes. The company-jobs endpoint gives you a snapshot of open positions at any given moment. The HR signals (specifically job-offers and republished-job-offers) give you real-time notifications when new listings appear or existing ones are republished. A practical workflow: use HR signals to get alerted when a target company posts a new role, then call company-jobs to see the full picture of what they’re currently hiring for. The signal gives you the trigger. The endpoint gives you the context.
Next Steps
You now have everything you need to start pulling LinkedIn content and job data through the Rodz API. A few concrete things to do next:
- Try each endpoint with a company or profile you know well. Compare the API output with what you see on LinkedIn to build confidence in the data.
- Build a weekly enrichment script using the workflow described in the strategy section above.
- Combine with signals to create a complete intelligence loop. Set up HR signals for real-time alerts and use the enrichment endpoints for context.
- Go through the full API in the interactive documentation for additional parameters and endpoint details.
If you haven’t set up your API key yet, start with the Getting Started guide. If you need a refresher on rate limits and error handling, the API reference has what you need.