Fetch a company’s news & activity feed with a cursor-based pagination.
Use it to drive “What’s new at this account?” widgets, sales research, or alerting.
Base URL: https://api.salescaddy.ai/api
Endpoint
GET /companies/{companyDomain}/feed
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
companyDomain | string | Yes | e.g., hilton.com |
Query parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
paginationId | string | No | — | Opaque cursor from the previous response to fetch the next batch |
The feed uses a cursor (
paginationId) instead of page/size. Store this value and pass it to retrieve the next items.
Example — First page
curl -X 'GET' \
'https://api.salescaddy.ai/api/companies/hilton.com/feed' \
-H 'accept: application/json' \
-H "Authorization: Bearer $TOKEN"const url = "https://api.salescaddy.ai/api/companies/hilton.com/feed";
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.TOKEN}` } });
const data = await res.json();
console.log(data);import os, requests
r = requests.get("https://api.salescaddy.ai/api/companies/hilton.com/feed",
headers={"Authorization": f"Bearer {os.environ['TOKEN']}"})
data = r.json()
print(data)using System.Net.Http.Headers;
var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", TOKEN);
var res = await http.GetAsync("https://api.salescaddy.ai/api/companies/hilton.com/feed");
Console.WriteLine(await res.Content.ReadAsStringAsync());Sample response (trimmed):
{
"paginationId": "eyJvZmZzZXQiOjEwMH0=",
"feeds": [
{
"description": "Hilton recently announced the signing of AMARIS Grace Bay to its exclusive LXR Hotels & Resorts portfolio, a distinctive resort and residential development set to debut in 2028 on the world-renowned Grace Bay Beach. Located along pristine shores, AMARIS brings a new dimension of curated luxury to Turks & Caicos, offering travelers an intimate escape defined by exceptional design and personalized service. AMARIS Grace Bay, LXR Hotels & Resorts is owned by SEFAMM (TCI) Ltd.Situated along one of th",
"enclosureImageUrl": "https://s3.amazonaws.com/owler-image/feedenclosure/hilton-to-expand-luxury-footprint-with-lxr-hotels-resorts-in-turks-and-caicos-_20251229_120000_original.png",
"date": "2025-12-29T09:04:00Z",
"publisherLogoUrl": "https://image4.owler.com/publisher/bwhotelier_original.png",
"publisherName": "BW Hotelier",
"sourceUrl": "https://www.bwhotelier.com/article/hilton-to-expand-luxury-footprint-with-lxr-hotels-resorts-in-turks-and-caicos-585172",
"title": "Hilton: Hilton to expand luxury footprint with LXR Hotels & Resorts in Turks and Caicos ",
"category": "NEWS"
},
{
"description": "Hilton Doha The Pearl Celebrates Sixth Anniversary, Redefining Luxury Hospitality And Dining In Doha's Thriving Tourism SceneHilton Doha The Pearl marks its sixth anniversary with new dining concepts, a refined identity, and continued growth in Doha's competitive hospitality sector. The post Hilton Doha The Pearl Celebrates Sixth Anniversary, Redefining Luxury Hospitality And Dining In Doha's Thriving Tourism Scene appeared first on Travel And Tour World.",
"date": "2025-12-28T00:00:00Z",
"publisherLogoUrl": "https://s3.amazonaws.com/owler-image/publisher/travelandtourworld_original.png",
"publisherName": "Travel and Tour World",
"sourceUrl": "https://www.travelandtourworld.com/news/article/hilton-doha-the-pearl-celebrates-sixth-anniversary-redefining-luxury-hospitality-and-dining-in-dohas-thriving-tourism-scene/",
"title": "Hilton: Hilton Doha The Pearl Celebrates Sixth Anniversary, Redefining Luxury Hospitality And Dining In Doha's Thriving Tourism Scene",
"category": "NEWS"
},
{
"description": "DoubleTree by Hilton Africa Expands with New Hotels in Togo, Congo, MoroccoDoubleTree by Hilton Africa expansion adds hotel options in Togo, Congo, Morocco enhancing travel stays and amenities for global guests. The post DoubleTree by Hilton Africa Expands with New Hotels in Togo, Congo, Morocco appeared first on Travel And Tour World.",
"date": "2025-12-28T00:00:00Z",
"publisherLogoUrl": "https://s3.amazonaws.com/owler-image/publisher/travelandtourworld_original.png",
"publisherName": "Travel and Tour World",
"sourceUrl": "https://www.travelandtourworld.com/news/article/doubletree-by-hilton-africa-expands-with-new-hotels-in-togo-congo-morocco/",
"title": "Hilton: DoubleTree by Hilton Africa Expands with New Hotels in Togo, Congo, Morocco",
"category": "NEWS"
},
....
]
}Example — Next page (use paginationId)
paginationId)curl -X 'GET' \
'https://api.salescaddy.ai/api/companies/hilton.com/feed?paginationId=AoJw2KL7hpsDODY5M2IwNjI5NDU5ZjViMjRjOTg4ZWVmNg%3D%3D' \
-H 'accept: application/json' \
-H "Authorization: Bearer $TOKEN"const cursor = "eyJvZmZzZXQiOjEwMH0="; // from previous response
const res = await fetch(`https://api.salescaddy.ai/api/companies/hilton.com/feed?paginationId=${encodeURIComponent(cursor)}`, {
headers: { Authorization: `Bearer ${process.env.TOKEN}` }
});
console.log(await res.json());cursor = "eyJvZmZzZXQiOjEwMH0=" # from previous response
r = requests.get("https://api.salescaddy.ai/api/companies/hilton.com/feed",
params={"paginationId": cursor},
headers={"Authorization": f"Bearer {os.environ['TOKEN']}"})
print(r.json())var cursor = "eyJvZmZzZXQiOjEwMH0="; // from previous response
var url = $"https://api.salescaddy.ai/api/companies/hilton.com/feed?paginationId={System.Net.WebUtility.UrlEncode(cursor)}";
var res2 = await http.GetAsync(url);
Console.WriteLine(await res2.Content.ReadAsStringAsync());Use cases & tips
- Account research — surface recent partnerships, product launches, funding, hiring spikes, etc.
- Sales alerts — poll periodically; when new
idappears, notify account owner. - Cursor handling — always store the latest
paginationIdyou used to fetch; pass it to continue where you left off. - De‑duplication — persist seen
ids to avoid duplicate notifications. - Backfill — if you want older items, continue following cursors until the API returns no further
paginationId.
Errors
| Code | Meaning | How to fix |
|---|---|---|
| 400 | Bad request | Validate companyDomain; ensure paginationId is a cursor returned by API. |
| 401 | Unauthorized | Provide/refresh Bearer token. |
| 403 | Forbidden | Check client permissions. |
| 404 | Not found | Unknown companyDomain or feed unavailable. |
| 429 | Rate limit exceeded | Retry with exponential backoff; respect Retry-After. |
| 500 | Internal server error | Retry later; contact support if persistent. |