Skip to main content

Pages API

Manage individual pages within a monitored domain.

Pages are automatically discovered when you add a domain, but you can also manually add specific pages to monitor.

List Pages

GET /api/domains/:id/pages

Response

{
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"domainId": "550e8400-e29b-41d4-a716-446655440000",
"url": "https://competitor.com/pricing",
"urlHash": "a1b2c3d4e5f6...",
"pageType": "pricing",
"pageTypeConfidence": "0.95",
"status": "active",
"monitoringEnabled": true,
"priority": 5,
"lastCheckAt": "2024-01-15T10:30:00Z",
"lastChangeAt": "2024-01-10T08:15:00Z",
"errorCount": 0,
"lastError": null,
"metadata": {},
"createdAt": "2024-01-01T00:00:00Z"
}
],
"meta": {
"total": 5,
"page": 1,
"pageSize": 100
}
}

Add Page

POST /api/domains/:id/pages

Manually add a page to monitor. Use this when automatic discovery didn't find a page you want to track.

Request Body

ParameterTypeRequiredDescription
urlstringYesFull URL of the page to monitor
pageTypestringNoPage classification (see types below)
{
"url": "https://competitor.com/enterprise-pricing",
"pageType": "pricing"
}

Response

{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440002",
"domainId": "550e8400-e29b-41d4-a716-446655440000",
"url": "https://competitor.com/enterprise-pricing",
"urlHash": "b2c3d4e5f6a7...",
"pageType": "pricing",
"status": "active",
"monitoringEnabled": true,
"priority": 5,
"lastCheckAt": null,
"lastChangeAt": null,
"errorCount": 0,
"lastError": null,
"metadata": {},
"createdAt": "2024-01-15T10:30:00Z"
}
}

Page Types

TypeDescription
pricingPricing and plan information
featuresFeature lists and comparisons
termsTerms of service, privacy policy
securitySecurity and compliance information
api_docsAPI documentation
changelogProduct changelog and release notes
otherGeneral content (default)

Error Codes

CodeStatusDescription
NOT_FOUND404Domain not found or not owned
VALIDATION_ERROR400URL doesn't belong to the domain
CONFLICT409Page URL already exists for this domain

Validation Example

The URL must belong to the monitored domain:

// Domain: competitor.com
// ✅ Valid
{ "url": "https://competitor.com/pricing" }
{ "url": "https://www.competitor.com/features" }
{ "url": "https://docs.competitor.com/api" }

// ❌ Invalid - different domain
{ "url": "https://other-site.com/pricing" }