Developer Docs
Index Pulse API is a technical SEO evidence API. It combines GSC verdicts, crawl waste, redirect intelligence, sitemaps, schema extraction, entity context, client reports, API access, and MCP workflows so agencies and platforms can answer why a URL is or is not visible.
What You Build With It
Authentication
Browser pages use a signed app session. API endpoints use bearer tokens with scoped read access. Signup-created workspace keys are accepted by the API gateway; the local demo token remains available as a fixture.
Authorization: Bearer YOUR_API_TOKEN
API Spec
/v1/openapi.json is the machine-readable API specification for SDKs and developer tools. It is not an OpenAI integration.
Quick Request
Use curl.exe on Windows PowerShell. Replace the token and host after production keys exist.
curl.exe -H "Authorization: Bearer ip_demo_local_read" ^
http://localhost:8787/v1/schema/audit
Crawler Access And Firewalls
If every URL fails to fetch, or the site returns 401, 403, 429, connection errors, or empty HTTP status, treat it as an access problem before treating it as an SEO problem. The customer should allow the Index Pulse crawler for the verified site, then run the analysis again.
| Allowlist Item | Value | Who Uses It |
|---|---|---|
| User-Agent | IndexPulseAPI/1.0 (+https://indexpulseapi.com/crawler) | Cloudflare, Wordfence, Sucuri, hosting firewall, bot protection, and request logs. |
| Contact | support@indexpulseapi.com | Security teams that need a human-readable crawler owner. |
| Outbound IPs | 74.220.48.0/24, 74.220.56.0/24, 216.151.17.91, 216.151.17.92 | Firewall/CDN rules that require source IP or CIDR allowlisting. |
Customer Allowlist Request
Allow the Index Pulse crawler for this verified site.
User-Agent: IndexPulseAPI/1.0 (+https://indexpulseapi.com/crawler)
Contact: support@indexpulseapi.com
Outbound IPs: 74.220.48.0/24, 74.220.56.0/24, 216.151.17.91, 216.151.17.92
Access Options
| Option | Best For | What It Does | Limit |
|---|---|---|---|
| Published crawler identity | Most sites and normal SaaS customers | Allow the Index Pulse user agent and contact in the CDN, host, firewall, or security plugin. | Some firewalls also require source IPs. |
| Outbound IP allowlist | Cloudflare, Wordfence, Sucuri, host firewalls, and security teams | Allow the hosted outbound CIDR ranges or dedicated crawler IPs. | Shared CIDR ranges may be too broad for strict customers. |
| Dedicated crawler IP | Enterprise customers, SEO platforms, and larger agencies | Crawl from a stable dedicated IP the customer can allowlist. | Requires extra infrastructure before promising it. |
| Search Console evidence | Users who want Google's known index state | Use authorized Google Search Console and URL Inspection data for verified properties. | Google's indexed verdict is not a live HTML crawl and does not extract title, canonical, schema, links, or rendered evidence. |
| Customer-side connector | Locked-down sites, intranets, staging, and high-security clients | A future plugin, worker, or script runs inside the customer's environment and sends normalized evidence to Index Pulse. | Requires customer installation and trust. |
| Manual/import fallback | Agencies with Screaming Frog, sitemap, GSC, or CMS exports | Import URLs and evidence so Index Pulse can report, compare, and prioritize before live crawling works. | Imported evidence can be stale and may miss page-level checks. |
What Index Pulse Will Not Do
Index Pulse does not pretend to be Googlebot, Bingbot, AhrefsBot, SemrushBot, or another crawler. Google-side evidence comes from customer-authorized Search Console access; live HTML evidence comes from the published Index Pulse crawler or a future customer-side connector.
Owner Or Self-Hosted Setup
Set INDEXPULSE_CRAWLER_OUTBOUND_IPS to the hosted outbound CIDR ranges or dedicated crawler IPs before offering IP allowlisting to customers. On a Render deployment, copy these from the service's Connect menu under the Outbound tab. If a customer cannot allowlist CIDR ranges, use dedicated outbound IPs.
Endpoint Map
| Endpoint | Scope | Best For |
|---|---|---|
/v1/indexation/snapshots | read:indexation | URL risk queues, page evidence widgets, client triage. |
/v1/crawl/waste | read:crawl | Crawl waste score, redirect waste, sitemap leaks, soft 404 exposure, canonical conflicts, and fix recommendations. |
/v1/crawl/errors | read:crawl | Non-200, robots, noindex, skipped, deferred, and soft 404 crawl evidence. |
/v1/crawl/soft-404 | read:crawl | Generated missing-route probe showing whether a framework returns 404/410 or incorrectly returns 200 OK. |
/v1/redirects/chains | read:crawl | Observed redirect start/final URL candidates for cleanup workflows. |
/v1/sitemaps/leaks | read:crawl | Sitemap URLs that carry indexability or canonical waste evidence. |
/v1/canonicals/clusters | read:crawl | Duplicate URL variants canonicalizing to the same preferred URL. |
/v1/schema/audit | read:schema | Schema coverage, structured-data blockers, and page evidence. |
/v1/entities/map | read:entities | Entity-to-page coverage, sameAs gaps, and topical evidence checks. |
/v1/ai/visibility | read:ai | Bing AI Performance citations, external intent/topic labels, and technical evidence for cited pages. |
/v1/connectors/bing/ai-performance | read:ai | Normalized Bing Webmaster Tools AI Performance import rows for exports, dashboards, and MCP workflows. |
/v1/alerts | read:alerts | Critical indexing events for Slack, email, or reporting tools. |
/v1/reports/client-index | read:reports | Client portals, internal SEO ops dashboards, customer-facing report exports, or product widgets. |
/v1/usage | read:usage | Credits, quota displays, internal billing estimates. |
/v1/billing/governance | read:usage | Stripe readiness, invoice checks, quota posture. |
/v1/stripe/webhook | Stripe signature | Signed checkout, subscription, and payment failure events that sync workspace billing status. |
/v1/openapi.json | public | SDK generation, developer portals, API client setup. |
Sample Data
Indexation Snapshot
{
"snapshots": [{
"url": "https://example.com/pricing",
"priority": "high",
"risk": { "level": "critical", "score": 100 },
"gsc": { "coverage_state": "excluded_by_noindex" },
"issues": ["noindex_detected", "gsc_not_indexed"],
"actions": [
"Remove noindex if accidental.",
"Review GSC Coverage and live page eligibility."
]
}]
}
Crawl Waste Report
{
"summary": {
"analyzed_urls": 100,
"wasted_urls": 12,
"crawl_waste_score": 34,
"redirecting_urls": 3,
"sitemap_leak_urls": 4
},
"issues": [{
"type": "sitemap_leak",
"severity": "high",
"url": "https://example.com/noindex-page",
"recommended_action": "Remove blocked, noindex, erroring, or non-canonical URLs from indexable sitemaps."
}]
}
Schema Audit
{
"summary": {
"pages_audited": 10,
"pages_with_structured_data": 10,
"invalid_json_ld_blocks": 0,
"average_schema_score": 99,
"average_evidence_score": 100
},
"pages": [{
"url": "https://example.com/",
"schema_types": ["Organization", "WebSite"],
"entities": ["Example", "Search Evidence API"],
"same_as": ["https://www.linkedin.com/company/example"],
"issues": []
}]
}
Entity Map
{
"entities": [{
"name": "Example",
"type": "Organization",
"pages": ["https://example.com/"],
"evidence": ["json_ld", "same_as", "page_copy"]
}]
}
Agency Use Cases
- Find high-value URLs blocked by noindex, robots, canonicals, or stale GSC state.
- Clean redirect waste, sitemap leaks, crawl errors, and duplicate canonical clusters before a migration or monthly report.
- Build client reports that tie indexation issues to actions and evidence.
- Track schema and entity coverage across service pages, product pages, and local pages.
Platform And MCP Use Cases
- Power reporting-tool widgets with page-level evidence and recommended actions.
- Add product enrichments to an SEO app, CMS plugin, website builder, or customer portal without rebuilding crawlers, schema parsers, or GSC workflows.
- Let MCP agents answer: which pages should be inspected, which entities are weak, and what changed.
Report Example Hub
The client-facing report templates and use-case walkthroughs now live on a dedicated page. Each template includes a visual preview, report sections, generation logic, API inputs, and MCP prompts.
Credit Planning
A practical estimate: 100 watched URLs refreshed weekly is roughly 3,000 credits per month in the current build. That includes weekly page crawls, crawl waste analysis, weekly GSC rows, sitemap checks, and a small alert/report allowance.
| Meter | Credit Weight | Example |
|---|---|---|
| HTML crawl page | 5 credits | 100 pages crawled weekly is about 2,000 credits per month. |
| Crawl waste analysis | Included with crawl refresh | Uses the already-collected crawl, sitemap, queue, and indexation evidence. |
| GSC inspection row | 2 credits | 100 imported rows weekly is about 800 credits per month. |
| Sitemap diff job | 20 base + 1 per 100 URLs | One weekly sitemap check for 100 URLs is about 84 credits per month. |
| Webhook delivery plan | 1 credit | Alert planning is low-cost and mostly tied to issue volume. |
MCP Positioning
MCP-ready workflows are included on every paid plan because MCP is an access method for the same evidence API. Signed-in workspace users can open /app/mcp to create an assistant token, copy the remote MCP server URL, and see first prompts. Platform pricing is for white-label API usage, custom MCP server packaging, higher limits, custom retention, and embedded product support.
| Client | What To Enter | Notes |
|---|---|---|
| Claude custom connector | https://indexpulseapi.com/mcp?token=YOUR_WORKSPACE_TOKEN | Name it indexpulse. Leave OAuth Client ID and OAuth Client Secret blank for the token URL setup. |
| Header-capable MCP clients | https://indexpulseapi.com/mcpAuthorization: Bearer YOUR_WORKSPACE_TOKEN | Use this cleaner setup when the client lets you send headers. |
| ChatGPT or Gemini API tools | https://indexpulseapi.com/v1/openapi.jsonAuthorization: Bearer YOUR_WORKSPACE_TOKEN | Use the OpenAPI/action-style fallback when the product surface does not expose remote MCP server configuration. |
| n8n | MCP node: /mcp with bearer header. HTTP Request node: any /v1/* endpoint with bearer header. | Start with HTTP Request if the MCP node in your n8n install is not available. |
Google Search Console
Most users connect Search Console from the app. Click Connect, choose the Google account that can access the property, and approve read-only access. No Google Cloud setup is needed.
| Option | Best For | What You Do | Result |
|---|---|---|---|
| Guided connection | Agency users and client workspaces | Open /app/integrations and click Connect Google Search Console. | Index Pulse can import Search Console evidence for the connected workspace. |
| Developer / DIY setup | Self-hosted installs and custom deployments | Create a Google Cloud OAuth client and set the environment variables below. | Your own deployment can run the same connection flow. |
| MCP / API access | Automations, agents, and external tools | Open /app/mcp, create an assistant token, and copy the setup package after Search Console is connected. | No Google secrets in MCP clients; tools read normalized evidence through Index Pulse. |
Developer / DIY Environment
GOOGLE_CLIENT_ID=your-google-oauth-client-id
GOOGLE_CLIENT_SECRET=your-google-oauth-client-secret
GOOGLE_REDIRECT_URI=https://your-domain.com/app/gsc/callback
INDEXPULSE_TOKEN_SECRET=a-long-random-token-encryption-secret
MCP / API Requests
curl.exe -H "Authorization: Bearer YOUR_WORKSPACE_TOKEN" ^
http://localhost:8787/v1/connectors/gsc
curl.exe -H "Authorization: Bearer YOUR_WORKSPACE_TOKEN" ^
http://localhost:8787/v1/connectors/gsc/url-inspection-jobs
Production Setup Surfaces
| Need | Where It Lives Now | Production Upgrade |
|---|---|---|
| App login | INDEXPULSE_SESSION_SECRET, signup users, and optional INDEXPULSE_APP_PASSWORD fallback | Signed sessions for workspace users, with a temporary shared-admin fallback only if configured. |
| Ops Admin | INDEXPULSE_PLATFORM_OWNER_EMAILS | Private platform-owner access to /app/admin. Normal workspace owners cannot open this page. |
| Pricing | inputs/billing-config.json | Stripe Products and Prices plus account plan records. |
| Stripe | STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, price ID variables, INDEXPULSE_PUBLIC_ORIGIN | Checkout session creation, signed webhook handling, customer mapping, subscription sync, invoice reconciliation. |
| API keys | inputs/api-keys.json stores hashed local fixtures | Account-owned expiring keys stored in a database. |
| GSC | /app/integrations, optional developer OAuth env vars, inputs/gsc-connector.json, and manual imports | Guided app connection for users; developer setup for self-hosted deployments; property sync and quota-aware URL Inspection jobs. |