Get content changelog
Changed onGet paginated changelog of detected URL changes across competitor sitemaps. Each item shows numeric counts per category plus up to 3 sample URLs per category by default — safe for any token budget. Supports filtering by competitorId and category query parameters. Pass allUrlsPerCategory=true for the full URL list per category (warning: high-activity competitors can produce large responses; combine with filters to scope, and check the truncated flag in the response — when true, the byte cap fired and items/URLs were trimmed).
Request
- Base URL: https://api.competlab.com
- URL: https://api.competlab.com/v1/projects/{projectId}/content/changelog
- Auth: API key in header CL-API-Key
Path parameters
Project ID
Query parameters
Page number (1-indexed)
Number of items per page
Filter by competitor ID
Filter by content category (blog, docs, tools, landing, caseStudies, comparison, integrations, changelog, webinars, legal, programmatic, other). Changelog rows carry the same category the content dashboard reports for the same URL, decided over the competitor's whole sitemap rather than over the changed URLs alone — so a page added into a templated catalog filters under programmatic, not other.
By default each item returns up to 3 sample URLs per category. Set true to return the full URL list per category. High-activity competitors can produce large responses — combine with category and competitorId filters to scope. Subject to an internal byte cap; check truncated in the response.
Response
Example response
{
"items": [
{
"competitorDomain": "competitor.com",
"sitemapUrl": "https://competitor.com/sitemap.xml",
"checkedAt": "2026-03-15T10:00:00.000Z",
"totalAdded": 5,
"totalRemoved": 2,
"addedByCategory": {
"blog": [
"https://competitor.com/blog/new-post"
],
"docs": [
"https://competitor.com/docs/new-guide"
],
"programmatic": [
"https://competitor.com/ncm/01012100"
]
},
"removedByCategory": {
"landing": [
"https://competitor.com/old-landing"
]
},
"addedCounts": {
"blog": 1,
"docs": 1
},
"removedCounts": {
"landing": 1
}
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 47,
"totalPages": 3,
"hasMore": true
}
}Changes
- breaking
the
queryrequest parametercategorywas restricted to a list of enum values - info
added the new enum value
blogto thequeryrequest parametercategory - info
added the new enum value
caseStudiesto thequeryrequest parametercategory - info
added the new enum value
changelogto thequeryrequest parametercategory - info
added the new enum value
comparisonto thequeryrequest parametercategory - info
added the new enum value
docsto thequeryrequest parametercategory - info
added the new enum value
integrationsto thequeryrequest parametercategory - info
added the new enum value
landingto thequeryrequest parametercategory - info
added the new enum value
legalto thequeryrequest parametercategory - info
added the new enum value
otherto thequeryrequest parametercategory - info
added the new enum value
programmaticto thequeryrequest parametercategory - info
added the new enum value
toolsto thequeryrequest parametercategory - info
added the new enum value
webinarsto thequeryrequest parametercategory
- breaking
- info
for the
pathrequest parameterprojectId, the type was generalized from no type tostring
- info