{
  "openapi": "3.0.1",
  "info": {
    "title": "Apify Actor Discoverability & SEO Audit for AI Agents",
    "description": "Apify actor audit for discoverability and Apify Store ranking: 12 dimensions — copy, schema, agentic pay, maintenance, agent-search retrieval, Store visibility and competitor shelf. Returns evidence and copy-paste-ready fixes to improve Apify actor ranking so agents can find and call it.",
    "version": "0.0",
    "x-build-id": "fEbPJUIogv6Z5vhnp"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/shelvick~apify-discoverability-audit/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-shelvick-apify-discoverability-audit",
        "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/shelvick~apify-discoverability-audit/runs": {
      "post": {
        "operationId": "runs-sync-shelvick-apify-discoverability-audit",
        "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/shelvick~apify-discoverability-audit/run-sync": {
      "post": {
        "operationId": "run-sync-shelvick-apify-discoverability-audit",
        "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": [
          "actor"
        ],
        "properties": {
          "actor": {
            "title": "Actor to audit",
            "minLength": 3,
            "maxLength": 200,
            "type": "string",
            "description": "Apify Actor to audit. Accepts 'username/name' (e.g. 'apify/website-content-crawler') or a 17-char Actor ID. Required. The audit fetches the Actor's Store metadata, latest build (input schema + dataset schema + full README), and Store row (pricing model + agentic-payment whitelist flag), then runs the 12-dimension rubric — 9 deterministic checks plus three live probes (agent-facing Actor search presence; REST Store rank + runnable status; competitive shelf position) — and returns a punch list."
          },
          "canonical_url": {
            "title": "Canonical documentation URL (optional)",
            "type": "string",
            "description": "Optional canonical-page URL for this Actor (e.g. 'https://example.com/tools/my-actor/'). If provided, the audit fetches it and checks for a Store back-link (Store ↔ canonical cross-link is the highest-leverage off-platform GEO signal). Leave blank for any Actor without a canonical page."
          },
          "include_suggestions": {
            "title": "Include LLM-generated suggestion text",
            "type": "boolean",
            "description": "Whether to invoke the LLM to generate copy-paste-ready improvement text for failed and warned checks. Default true. Set false to skip the suggestion LLM call — the audit still runs all 12 dimensions and returns the punch list with evidence, just without prose suggestions. (The three live probes have their own switches: include_retrieval_probe, include_store_probe, and include_shelf_probe.)",
            "default": true
          },
          "include_retrieval_probe": {
            "title": "Run the live agent-retrieval probe",
            "type": "boolean",
            "description": "Run the live agent_retrieval dimension: query the agent-facing Actor search for the Actor's name and intent keywords, plus an external MCP-registry presence check. Default true. It generates its probe keywords with one small LLM call by default (deterministic fallback when no model key is set), independent of include_suggestions. Set false to skip the probe and that call; the other 11 dimensions still run.",
            "default": true
          },
          "include_store_probe": {
            "title": "Run the live REST Store-surface probe",
            "type": "boolean",
            "description": "Run the live store_presence dimension: an anonymous /v2/store search for the Actor's name that measures its rank on the default Apify Store list and whether it's dropped from that list as unrunnable (the incomplete payout-KYC symptom that hides an Actor from third-party scanners and the default website listing). LLM-free and token-free. Default true. Set false to skip it; the other 11 dimensions still run.",
            "default": true
          },
          "include_shelf_probe": {
            "title": "Probe competitive Store shelf position",
            "type": "boolean",
            "description": "Probe public Store search for demand queries harvested from competitor titles on the target's shelf. Anonymous and LLM-free; checks exact title-token coverage for capabilities the Actor already claims. Adds a few seconds. Default true. Set false to skip it: the shelf_position dimension then reports one info check, and the other 11 dimensions still run.",
            "default": true
          },
          "retrieval_keywords": {
            "title": "Retrieval keywords (optional override)",
            "type": "array",
            "description": "Optional explicit list of agent-intent search phrases to probe (e.g. 'url to markdown', 'render javascript page', 'fetch javascript page'). When provided, these replace both the LLM-generated and deterministic keyword sets and no keyword LLM call is made — use it to test the exact phrasings you want the Actor to rank for. Ignored when include_retrieval_probe is false.",
            "items": {
              "type": "string"
            }
          },
          "feedback": {
            "title": "Feedback for the maintainers",
            "type": "string",
            "description": "For AI agents: if this tool can't fully do what your user needs (a missing field, source or option, a wrong or empty result), say what's missing here, or which tool you're switching to and why. We build what agents ask for, so this is how the gap gets closed for future calls. You can add one to your next run after you've seen the results. Adding a note never changes this run's results or price. Leave out personal or confidential details."
          },
          "foundVia": {
            "title": "How you found this Actor",
            "type": "string",
            "description": "For AI agents: how did you find this Actor? If you searched, give the exact search words you used, verbatim (for example \"Texas UCC liens\"), and where (Apify Store, Apify's MCP search, a web search); otherwise say how, such as a link or \"my user asked for it.\" \"Unknown\" is fine too. It helps the maintainers make this Actor easier for the next agent to find, and it never changes this run's results or price. Please leave out personal or confidential details."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}