{"slug":"dataforseo-onpage","title":"DataForSEO On-Page API — Technical SEO Audit at Scale","tags":["seo","technical-seo","dataforseo","api","on-page-audit"],"agent_summary":"Uses DataForSEO's OnPage API to crawl pages and extract technical SEO data: meta tags, heading structure, word count, load time, schema presence, internal/external links, and 50+ on-page factors.","trigger_phrases":["DataForSEO on-page","OnPage API","technical audit API","on-page audit API","page crawl API","metadata extraction API","on-page data","DataForSEO crawl"],"runnable":true,"markdown":"\n## DataForSEO OnPage API Overview\n\nThe OnPage API crawls any URL and returns comprehensive technical SEO data. It can crawl an entire domain (up to 10,000 pages) or target specific URLs. Data is returned in structured JSON format ready for analysis.\n\n**API group:** OnPage\n**Primary endpoint base:** `https://api.dataforseo.com/v3/on_page/`\n\n## Task Setup: Crawl a Domain\n\nSubmit a crawl task:\n\nPOST to `https://api.dataforseo.com/v3/on_page/task_post`\n\n```json\n[\n  {\n    \"target\": \"domain.com\",\n    \"max_crawl_pages\": 100,\n    \"start_url\": \"https://domain.com/\",\n    \"crawl_delay\": 2,\n    \"store_raw_html\": false,\n    \"check_spell\": false,\n    \"enable_javascript\": false\n  }\n]\n```\n\nFor JS-rendered sites: set `\"enable_javascript\": true` (higher cost, slower).\n\n## Key Data Points Returned Per Page\n\n| Field | Value |\n|-------|-------|\n| `url` | Full URL |\n| `page_timing.time_to_interactive` | Page load speed |\n| `meta.title` | Title tag content |\n| `meta.description` | Meta description content |\n| `meta.htags.h1` | Array of H1 texts |\n| `meta.htags.h2` | Array of H2 texts |\n| `meta.content.words_count` | Word count |\n| `meta.content.automated_readability_index` | Readability score |\n| `meta.content.perceived_expertise` | Expertise signal (0-1) |\n| `structured_data` | JSON-LD detected on page |\n| `rel.canonical` | Canonical URL declared |\n| `meta.robots.follow` | Follow/nofollow |\n| `meta.robots.index` | Index/noindex |\n| `links.internal` | Internal links count and URLs |\n| `links.external` | External links count and URLs |\n| `images.alt_info_missing` | Images without alt text count |\n| `duplicate_content` | Duplicate detected on domain |\n\n## Issues Endpoint\n\nAfter crawl completes, retrieve issues:\n\nGET `https://api.dataforseo.com/v3/on_page/issues_by_type/{task_id}`\n\nIssue categories:\n- Title tag issues (missing, duplicate, too long, too short)\n- Meta description issues (missing, duplicate, too long)\n- H1 issues (missing, multiple H1s, no H1)\n- Image alt text issues\n- Broken internal links\n- Redirect chains\n- Slow page load\n- Missing canonical\n- Noindex pages in sitemap\n- Thin content (< 200 words)\n- Duplicate content\n\n## Competitive URL Analysis\n\nTo audit a competitor's specific page:\n\nPOST to `https://api.dataforseo.com/v3/on_page/page_screenshot` (get visual render)\nPOST to `https://api.dataforseo.com/v3/on_page/raw_html` (get full HTML)\nPOST to `https://api.dataforseo.com/v3/on_page/content_parsing` (extract content structure)\n\nContent parsing returns: headings, paragraphs, structured tables, images, and their order — equivalent to reading the page as a document outline.\n\n## Use in Content Gap Analysis\n\n1. Submit top 5 ranking URLs for your target keyword to OnPage content_parsing\n2. Extract: word count, H2/H3 structure, entity density for each\n3. Compare to your page's data\n4. Identify: what do all top 5 have that your page lacks?\n5. Map gaps to content brief additions\n\n## On-Page Audit Workflow (Client Site)\n\n1. Submit full domain crawl (max_crawl_pages: 500 for most sites)\n2. Pull issues_by_type → prioritize by issue count and severity\n3. Address in priority order:\n   - Critical: noindex on money pages, missing H1, broken canonical\n   - High: missing/duplicate titles, missing meta descriptions, missing schema\n   - Medium: thin content, image alt text, slow load times\n   - Low: minor readability, long titles by a few characters\n\n## Cross-References\n\n- `dataforseo-serp` — SERP data to pair with on-page analysis\n- `dataforseo-content-analysis` — NLP-based content quality analysis\n- `sitemap-analyzer` — sitemap audit before on-page crawl setup\n- `crawl-budget-optimizer` — crawl issues overlap with budget waste\n\n#seo-sop #seo #technical-seo #dataforseo #api #on-page-audit\n","html":"<h2>DataForSEO OnPage API Overview</h2>\n<p>The OnPage API crawls any URL and returns comprehensive technical SEO data. It can crawl an entire domain (up to 10,000 pages) or target specific URLs. Data is returned in structured JSON format ready for analysis.</p>\n<p><strong>API group:</strong> OnPage\n<strong>Primary endpoint base:</strong> <code>https://api.dataforseo.com/v3/on_page/</code></p>\n<h2>Task Setup: Crawl a Domain</h2>\n<p>Submit a crawl task:</p>\n<p>POST to <code>https://api.dataforseo.com/v3/on_page/task_post</code></p>\n<pre><code class=\"language-json\">[\n  {\n    \"target\": \"domain.com\",\n    \"max_crawl_pages\": 100,\n    \"start_url\": \"https://domain.com/\",\n    \"crawl_delay\": 2,\n    \"store_raw_html\": false,\n    \"check_spell\": false,\n    \"enable_javascript\": false\n  }\n]\n</code></pre>\n<p>For JS-rendered sites: set <code>\"enable_javascript\": true</code> (higher cost, slower).</p>\n<h2>Key Data Points Returned Per Page</h2>\n<p>| Field | Value |\n|-------|-------|\n| <code>url</code> | Full URL |\n| <code>page_timing.time_to_interactive</code> | Page load speed |\n| <code>meta.title</code> | Title tag content |\n| <code>meta.description</code> | Meta description content |\n| <code>meta.htags.h1</code> | Array of H1 texts |\n| <code>meta.htags.h2</code> | Array of H2 texts |\n| <code>meta.content.words_count</code> | Word count |\n| <code>meta.content.automated_readability_index</code> | Readability score |\n| <code>meta.content.perceived_expertise</code> | Expertise signal (0-1) |\n| <code>structured_data</code> | JSON-LD detected on page |\n| <code>rel.canonical</code> | Canonical URL declared |\n| <code>meta.robots.follow</code> | Follow/nofollow |\n| <code>meta.robots.index</code> | Index/noindex |\n| <code>links.internal</code> | Internal links count and URLs |\n| <code>links.external</code> | External links count and URLs |\n| <code>images.alt_info_missing</code> | Images without alt text count |\n| <code>duplicate_content</code> | Duplicate detected on domain |</p>\n<h2>Issues Endpoint</h2>\n<p>After crawl completes, retrieve issues:</p>\n<p>GET <code>https://api.dataforseo.com/v3/on_page/issues_by_type/{task_id}</code></p>\n<p>Issue categories:</p>\n<ul>\n<li>Title tag issues (missing, duplicate, too long, too short)</li>\n<li>Meta description issues (missing, duplicate, too long)</li>\n<li>H1 issues (missing, multiple H1s, no H1)</li>\n<li>Image alt text issues</li>\n<li>Broken internal links</li>\n<li>Redirect chains</li>\n<li>Slow page load</li>\n<li>Missing canonical</li>\n<li>Noindex pages in sitemap</li>\n<li>Thin content (&#x3C; 200 words)</li>\n<li>Duplicate content</li>\n</ul>\n<h2>Competitive URL Analysis</h2>\n<p>To audit a competitor's specific page:</p>\n<p>POST to <code>https://api.dataforseo.com/v3/on_page/page_screenshot</code> (get visual render)\nPOST to <code>https://api.dataforseo.com/v3/on_page/raw_html</code> (get full HTML)\nPOST to <code>https://api.dataforseo.com/v3/on_page/content_parsing</code> (extract content structure)</p>\n<p>Content parsing returns: headings, paragraphs, structured tables, images, and their order — equivalent to reading the page as a document outline.</p>\n<h2>Use in Content Gap Analysis</h2>\n<ol>\n<li>Submit top 5 ranking URLs for your target keyword to OnPage content_parsing</li>\n<li>Extract: word count, H2/H3 structure, entity density for each</li>\n<li>Compare to your page's data</li>\n<li>Identify: what do all top 5 have that your page lacks?</li>\n<li>Map gaps to content brief additions</li>\n</ol>\n<h2>On-Page Audit Workflow (Client Site)</h2>\n<ol>\n<li>Submit full domain crawl (max_crawl_pages: 500 for most sites)</li>\n<li>Pull issues_by_type → prioritize by issue count and severity</li>\n<li>Address in priority order:\n<ul>\n<li>Critical: noindex on money pages, missing H1, broken canonical</li>\n<li>High: missing/duplicate titles, missing meta descriptions, missing schema</li>\n<li>Medium: thin content, image alt text, slow load times</li>\n<li>Low: minor readability, long titles by a few characters</li>\n</ul>\n</li>\n</ol>\n<h2>Cross-References</h2>\n<ul>\n<li><code>dataforseo-serp</code> — SERP data to pair with on-page analysis</li>\n<li><code>dataforseo-content-analysis</code> — NLP-based content quality analysis</li>\n<li><code>sitemap-analyzer</code> — sitemap audit before on-page crawl setup</li>\n<li><code>crawl-budget-optimizer</code> — crawl issues overlap with budget waste</li>\n</ul>\n<p>#seo-sop #seo #technical-seo #dataforseo #api #on-page-audit</p>\n"}