Internal Link Opportunity Finder
Pricing
from $5.00 / 1,000 page analyzeds
Go to Apify Store
Internal Link Opportunity Finder
Crawl websites and find explainable, contextual internal linking opportunities.
Internal Link Opportunity Finder
Pricing
from $5.00 / 1,000 page analyzeds
Crawl websites and find explainable, contextual internal linking opportunities.
You can access the Internal Link Opportunity Finder programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "1.0", "x-build-id": "iCgIFozkHejWIIGKw" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/ib4ngz~internal-link-opportunity-finder/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-ib4ngz-internal-link-opportunity-finder", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } }, "/acts/ib4ngz~internal-link-opportunity-finder/runs": { "post": { "operationId": "runs-sync-ib4ngz-internal-link-opportunity-finder", "x-openai-isConsequential": false, "summary": "Executes an Actor and returns information about the initiated run in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runsResponseSchema" } } } } } } }, "/acts/ib4ngz~internal-link-opportunity-finder/run-sync": { "post": { "operationId": "run-sync-ib4ngz-internal-link-opportunity-finder", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "inputSchema": { "type": "object", "required": [ "startUrls" ], "properties": { "startUrls": { "title": "Start URLs", "type": "array", "description": "One or more website URLs. URLs from the same hostname share one site analysis.", "items": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "title": "URL of a web page", "format": "uri" } } } }, "maxPagesPerSite": { "title": "Maximum pages per site", "minimum": 1, "maximum": 5000, "type": "integer", "description": "Maximum number of HTML pages crawled for each website.", "default": 100 }, "maxCrawlDepth": { "title": "Maximum crawl depth", "minimum": 0, "maximum": 50, "type": "integer", "description": "Maximum internal-link distance from a start or sitemap URL.", "default": 10 }, "includeSubdomains": { "title": "Include subdomains", "type": "boolean", "description": "Allow pages on child subdomains of each start hostname.", "default": false }, "respectRobotsTxt": { "title": "Respect robots.txt", "type": "boolean", "description": "Apply the matching robots.txt allow/disallow rules during the page crawl.", "default": true }, "minimumOpportunityScore": { "title": "Minimum opportunity score", "minimum": 0, "maximum": 1, "type": "number", "description": "Only emit opportunities at or above this normalized 0–1 score.", "default": 0.6 }, "maxOpportunitiesPerPage": { "title": "Maximum opportunities per source page", "minimum": 1, "maximum": 100, "type": "integer", "description": "Limits recommendations returned for each source page.", "default": 10 }, "detectOrphanPages": { "title": "Detect orphan candidates", "type": "boolean", "description": "Flag sitemap/start pages with no inbound links found in the analyzed crawl.", "default": true }, "minimumWordCount": { "title": "Minimum word count", "minimum": 0, "maximum": 10000, "type": "integer", "description": "Minimum cleaned-content word count for opportunity source and target pages.", "default": 100 }, "outputMode": { "title": "Dataset output mode", "enum": [ "grouped", "flat" ], "type": "string", "description": "Grouped produces one item per source page; flat produces one item per opportunity.", "default": "grouped" }, "includeUrlPatterns": { "title": "Include URL patterns", "type": "array", "description": "Optional wildcard URL patterns that pages must match.", "default": [], "items": { "type": "string" } }, "excludeUrlPatterns": { "title": "Exclude URL patterns", "type": "array", "description": "Optional wildcard URL patterns excluded from crawling.", "default": [], "items": { "type": "string" } }, "targetUrlPatterns": { "title": "Target URL patterns", "type": "array", "description": "Optional wildcard patterns restricting recommendation target pages.", "default": [], "items": { "type": "string" } }, "preferredTargetUrls": { "title": "Preferred target URLs", "type": "array", "description": "Wildcard patterns for strategic pages that receive an importance boost.", "default": [], "items": { "type": "string" } }, "ignoredTargetUrls": { "title": "Ignored target URLs", "type": "array", "description": "Wildcard patterns for pages that must never be recommended as targets.", "default": [], "items": { "type": "string" } }, "proxyConfiguration": { "title": "Proxy configuration", "type": "object", "description": "Standard Apify Proxy or custom proxy settings.", "default": { "useApifyProxy": false } } } }, "runsResponseSchema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "id": { "type": "string" }, "actId": { "type": "string" }, "userId": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "finishedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "status": { "type": "string", "example": "READY" }, "meta": { "type": "object", "properties": { "origin": { "type": "string", "example": "API" }, "userAgent": { "type": "string" } } }, "stats": { "type": "object", "properties": { "inputBodyLen": { "type": "integer", "example": 2000 }, "rebootCount": { "type": "integer", "example": 0 }, "restartCount": { "type": "integer", "example": 0 }, "resurrectCount": { "type": "integer", "example": 0 }, "computeUnits": { "type": "integer", "example": 0 } } }, "options": { "type": "object", "properties": { "build": { "type": "string", "example": "latest" }, "timeoutSecs": { "type": "integer", "example": 300 }, "memoryMbytes": { "type": "integer", "example": 1024 }, "diskMbytes": { "type": "integer", "example": 2048 } } }, "buildId": { "type": "string" }, "defaultKeyValueStoreId": { "type": "string" }, "defaultDatasetId": { "type": "string" }, "defaultRequestQueueId": { "type": "string" }, "buildNumber": { "type": "string", "example": "1.0.0" }, "containerUrl": { "type": "string" }, "usage": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "integer", "example": 1 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } }, "usageTotalUsd": { "type": "number", "example": 0.00005 }, "usageUsd": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "number", "example": 0.00005 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Internal Link Opportunity Finder from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: