In a nutshell: The Rodz API exposes three enrichment endpoints that let you pull 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 walks through all three endpoints with cURL examples, response schemas, rate-limit considerations, and a strategy section explaining how to fold this data into your 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 are enrichment endpoints: you call them when you need data, and they return it synchronously. There is no webhook involved, no configuration to set up, no threshold to define. You make a POST request, the API fetches the data, and you get a JSON response.
The three endpoints covered 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.
For B2B teams, this data is valuable in three ways. First, it provides context for outreach. Knowing what a prospect just posted about lets you write messages that feel relevant instead of generic. Second, it feeds content analysis at scale. If you monitor the posts of 500 decision-makers in your ICP, you can spot trends, identify pain points, and build content that resonates. Third, job listings reveal hiring intent, budget allocation, and technology choices, all 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 is 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, the publication date, engagement metrics (likes, comments, shares), any media attachments (images, documents, video thumbnails), and the post URL.
The API returns posts in reverse chronological order. By default, you get the 20 most recent posts, but you can adjust pagination parameters to fetch more. The content is returned as plain text with line breaks preserved, making it easy to parse and analyze programmatically.
This endpoint only returns posts authored by the profile owner. Reposts (shares of other people’s content) are included but flagged separately so you can filter them out if you only care about 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 is your opening.
- Content-driven lead scoring. If a decision-maker frequently posts about topics related to your solution, they are more likely to be receptive. Score leads higher when their content aligns with your value proposition.
- Influencer identification. Pull posts from everyone in a target account and rank them by engagement. The person with the most likes and comments is the internal influencer, and often the best first contact.
- Competitor analysis. Monitor what competitor executives are posting about. Their content themes often telegraph product direction and positioning shifts.
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 the limit parameter low for pre-call research. Ten posts is more than enough context. Save higher limits for bulk analysis workflows where you need to build a content profile across weeks or months.
If you are 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 (paid ads) 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 aligns with 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. This context makes your outreach more personal.
- Monitoring customers. If you already work with a company, their public posts can alert you to 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 engagement rate (10%) 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 that growth.
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 is a coordinated messaging push, which means it is a strategic priority.
Endpoint 3: Company Jobs
What It Returns
The POST /enrich/company-jobs endpoint returns the active job listings published by a company 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 our HR signals guide), this is not a monitoring tool. It does not fire events or push webhooks. Instead, it gives you a snapshot of a company’s current open positions at the moment you call it. Think of it as an on-demand enrichment: 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 serves 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 are 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 something about where budget is flowing.
- Timing outreach around new hires. A newly posted VP of Marketing role means that in 2-3 months, a new marketing leader will join. New leaders evaluate tools. That is your window.
- Feeding ABM targeting. Filter companies by the departments they are hiring for. If you sell to marketing teams, target companies with 3+ open marketing roles. They are 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 powerful for targeted prospecting. If you sell developer tools, filter for Engineering roles at Senior level and above. You will get a focused list of companies that are actively scaling their engineering team with experienced hires, which means they are likely 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 analysis, 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 strongest signals of growth and budget availability.
Building a Content Intelligence Strategy
These three endpoints are most powerful when used together. Here is 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 the 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 relevant.
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 gracefully.
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 will be available within a few hours.
Can I pull posts from private LinkedIn profiles?
No. The API only returns content that is 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. Signals are for ongoing monitoring. Enrichment endpoints are for on-demand research. 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 are running batch operations across hundreds of profiles or companies, pace your requests accordingly 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 is done on your side. That said, the structured text content makes it straightforward to implement keyword matching or even 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?
Absolutely. 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 everything they are 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. Here is what 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.
- Explore the full API in the interactive documentation for additional parameters and endpoint details.
If you have not yet set up your API key, start with the Getting Started guide. If you need a refresher on rate limits and error handling, check the API reference.