UTM Campaign URL QA Auditor
Pricing
Pay per event
Go to Apify Store
UTM Campaign URL QA Auditor
Audit campaign URLs in bulk for redirect chains, UTM preservation, HTTPS, final host/path rules, status codes, and timings.
UTM Campaign URL QA Auditor
Pricing
Pay per event
Audit campaign URLs in bulk for redirect chains, UTM preservation, HTTPS, final host/path rules, status codes, and timings.
You can access the UTM Campaign URL QA Auditor 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 Integrations settings in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "0.1", "x-build-id": "zUqQCyHMThUZGQBzg" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/automation-lab~utm-campaign-url-qa-auditor/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-automation-lab-utm-campaign-url-qa-auditor", "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/automation-lab~utm-campaign-url-qa-auditor/runs": { "post": { "operationId": "runs-sync-automation-lab-utm-campaign-url-qa-auditor", "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/automation-lab~utm-campaign-url-qa-auditor/run-sync": { "post": { "operationId": "run-sync-automation-lab-utm-campaign-url-qa-auditor", "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": "Campaign URLs", "type": "array", "description": "URLs to audit. Each item can be a URL or an object with url, expectedFinalHost, expectedFinalPath, expectedUtmParams, and allowedExtraParams.", "items": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "title": "URL of a web page", "format": "uri" } } } }, "csvText": { "title": "CSV input (optional)", "type": "string", "description": "Optional CSV with columns url, expectedFinalHost, expectedFinalPath, and UTM columns such as utm_source. Simple comma-separated values only." }, "expectedUtmParams": { "title": "Expected UTM parameters", "type": "object", "description": "Key-value UTM parameters that should survive redirects, for example {\"utm_source\":\"newsletter\",\"utm_medium\":\"email\"}." }, "expectedFinalHost": { "title": "Expected final host", "type": "string", "description": "Optional final domain/host to enforce, for example example.com." }, "expectedFinalPath": { "title": "Expected final path", "type": "string", "description": "Optional exact final URL path to enforce, for example /pricing." }, "allowedExtraParams": { "title": "Allowed extra UTM parameters", "type": "array", "description": "UTM parameter names that are allowed even if not listed in expectedUtmParams.", "items": { "type": "string" } }, "requireHttps": { "title": "Require HTTPS final URL", "type": "boolean", "description": "Fail rows whose final landing URL is not HTTPS.", "default": true }, "includeHtmlSignals": { "title": "Fetch HTML signals", "type": "boolean", "description": "Fetch the final page with GET to extract canonical URL and meta robots. Leave off for cheapest redirect-only QA.", "default": false }, "requestMethod": { "title": "Redirect request mode", "enum": [ "HEAD_THEN_GET", "GET_ONLY", "HEAD_ONLY" ], "type": "string", "description": "HEAD_THEN_GET is fastest and falls back to GET when HEAD is blocked.", "default": "HEAD_THEN_GET" }, "maxRedirects": { "title": "Maximum redirects per URL", "minimum": 0, "maximum": 25, "type": "integer", "description": "Stop following a URL after this many redirects.", "default": 10 }, "timeoutSecs": { "title": "Timeout per request in seconds", "minimum": 3, "maximum": 120, "type": "integer", "description": "Per-hop HTTP timeout.", "default": 20 }, "concurrency": { "title": "Concurrent URL checks", "minimum": 1, "maximum": 25, "type": "integer", "description": "Number of campaign URLs audited in parallel.", "default": 5 }, "userAgent": { "title": "Custom user agent", "type": "string", "description": "Optional user-agent string for sites that reject default clients." }, "maxItems": { "title": "Maximum URLs to audit", "minimum": 1, "maximum": 10000, "type": "integer", "description": "Safety cap for combined startUrls and csvText rows.", "default": 20 } } }, "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 UTM Campaign URL QA Auditor 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: