{
  "openapi": "3.0.1",
  "info": {
    "title": "ICP Fit Scorer",
    "description": "Scores pre-enriched companies against your Ideal Customer Profile using weighted signals. Returns a 0 to 100 fit score, A to D tier, and per-signal breakdown. Deterministic and LLM modes. Built for Clay enrichment and batch processing. MCP-ready for Claude Desktop and AI agents.",
    "version": "1.2",
    "x-build-id": "IYI5BfmJ0WjZMHYD0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mambalabs~icp-account-lead-scoring-fit-scorer-0-100-for-clay/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mambalabs-icp-account-lead-scoring-fit-scorer-0-100-for-clay",
        "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/mambalabs~icp-account-lead-scoring-fit-scorer-0-100-for-clay/runs": {
      "post": {
        "operationId": "runs-sync-mambalabs-icp-account-lead-scoring-fit-scorer-0-100-for-clay",
        "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/mambalabs~icp-account-lead-scoring-fit-scorer-0-100-for-clay/run-sync": {
      "post": {
        "operationId": "run-sync-mambalabs-icp-account-lead-scoring-fit-scorer-0-100-for-clay",
        "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",
        "properties": {
          "company_domain": {
            "title": "Company Domain",
            "type": "string",
            "description": "The primary domain of the company to score (e.g. clay.com)."
          },
          "company_name": {
            "title": "Company Name",
            "type": "string",
            "description": "Optional display name of the company."
          },
          "domains": {
            "title": "Domains (batch)",
            "type": "array",
            "description": "Optional list of bare company domains, one company per line. Each domain is scored as its own row, with the same scoring_config or template. Turn on fetch_signals to read live hiring and tech stack signals for each one; otherwise only the signals you pass apply.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "scoring_config": {
            "title": "Scoring Config",
            "type": "object",
            "description": "JSON scoring weights config. Alternative to icp_description. Required if icp_description is not provided. Takes precedence over template if both are provided. weights must sum to exactly 100. Optional sibling keys tune the data-driven signals: target_employee_bands, revenue_range, min_gtm_roles, min_total_followers, min_social_platforms, min_job_count, min_keyword_matches, min_funding_amount, headcount_range, target_industries."
          },
          "template": {
            "title": "Scoring Template",
            "enum": [
              "full_signal",
              "saas_outbound",
              "b2b_services",
              "fintech",
              "smb_local",
              "enterprise"
            ],
            "type": "string",
            "description": "Pre-built scoring config. Used when scoring_config is not provided. full_signal scores every fleet source; the others are role-specific presets. Options: full_signal, saas_outbound, b2b_services, fintech, smb_local, enterprise."
          },
          "tier_thresholds": {
            "title": "Tier Thresholds",
            "type": "object",
            "description": "Optional. Minimum score for each tier as { \"tier_a\": number, \"tier_b\": number, \"tier_c\": number }. Scores at or above tier_a are A, tier_b are B, tier_c are C, else D. Defaults to 80 / 60 / 40."
          },
          "funded_within_days": {
            "title": "Funded Within Days",
            "type": "integer",
            "description": "Optional. How recent a funding round must be to count for the recently_funded signal, in days. Defaults to 540 (18 months)."
          },
          "dataset_id": {
            "title": "Dataset ID",
            "type": "string",
            "description": "Apify dataset ID to fetch items from. Each item is processed as a lead to score. Works alongside or instead of inline JSON input."
          },
          "csv_url": {
            "title": "CSV URL",
            "type": "string",
            "description": "URL of a CSV file to fetch and parse. Each row becomes a lead to score. Works alongside inline JSON or dataset_id."
          },
          "fetch_signals": {
            "title": "Fetch Signals",
            "type": "boolean",
            "description": "If true, run mambalabs/gtm-hiring-signal-scraper and mambalabs/gtm-tech-stack-signal-scraper for each company before scoring and fill any hiring or tech stack signal you did not supply. Uses the run's own Apify token. Each actor bills your account at its own Store price, at list price 0.05 USD plus 0.015 USD per company. A failed lookup marks the row degraded and names the missing signals. All other signals are always supplied as input.",
            "default": false
          },
          "apify_token": {
            "title": "Apify Token",
            "type": "string",
            "description": "Optional. Apify API token for fetch_signals and dataset_id. Leave empty to use the run's own token, which is what almost every caller wants."
          },
          "include_explanation": {
            "title": "Include Explanation",
            "type": "boolean",
            "description": "If true, adds a score_explanation string to each output row describing what matched, missed, and point values.",
            "default": false
          },
          "min_score_to_output": {
            "title": "Min Score to Output",
            "type": "integer",
            "description": "If set, rows scoring below this threshold are skipped from output (not pushed to dataset). Skipped rows are logged only."
          },
          "webhook_url": {
            "title": "Webhook URL",
            "type": "string",
            "description": "URL to POST each scored result to as JSON after pushing to dataset. Fire and forget."
          },
          "previous_score": {
            "title": "Previous Score",
            "type": "integer",
            "description": "Previous ICP score for this company. If provided, output includes score_change and score_trend fields."
          },
          "gtm_hiring_signal": {
            "title": "GTM Hiring Signal",
            "type": "string",
            "description": "Whether the company is actively hiring for GTM/sales roles. Accepts a boolean-like string (\"true\"/\"false\"). Sent as a string for Clay compatibility and coerced to boolean at runtime."
          },
          "gtm_role_count": {
            "title": "GTM Role Count",
            "type": "string",
            "description": "Number of open GTM/sales roles. Scores via the gtm_role_count_strong signal when at or above min_gtm_roles (default 2). Accepts a numeric string (e.g. \"8\"). Sent as a string for Clay compatibility and coerced to integer at runtime."
          },
          "uses_hubspot": {
            "title": "Uses HubSpot",
            "type": "string",
            "description": "Whether the company uses HubSpot. Accepts a boolean-like string (\"true\"/\"false\"). Sent as a string for Clay compatibility and coerced to boolean at runtime."
          },
          "uses_salesforce": {
            "title": "Uses Salesforce",
            "type": "string",
            "description": "Whether the company uses Salesforce. Accepts a boolean-like string (\"true\"/\"false\"). Sent as a string for Clay compatibility and coerced to boolean at runtime."
          },
          "uses_clay": {
            "title": "Uses Clay",
            "type": "string",
            "description": "Whether the company uses Clay. Accepts a boolean-like string (\"true\"/\"false\"). Sent as a string for Clay compatibility and coerced to boolean at runtime."
          },
          "crm_detected": {
            "title": "CRM Detected",
            "type": "string",
            "description": "Whether any CRM was detected. Accepts a boolean-like string (\"true\"/\"false\") or any non-empty CRM name (e.g. \"Salesforce\"). Sent as a string for Clay compatibility and coerced to boolean at runtime. Auto-derived from uses_hubspot/uses_salesforce if not set."
          },
          "seq_tool_detected": {
            "title": "Sequencing Tool Detected",
            "type": "string",
            "description": "Whether a sales sequencing tool (Outreach, SalesLoft, Apollo, Lemlist) was detected. Accepts a boolean-like string (\"true\"/\"false\") or any non-empty tool name (e.g. \"Outreach\"). Sent as a string for Clay compatibility and coerced to boolean at runtime."
          },
          "tech_stack": {
            "title": "Tech Stack",
            "type": "string",
            "description": "Comma-separated list of technologies. Used to auto-detect CRM/sequencing tools if booleans are not set."
          },
          "headcount": {
            "title": "Headcount",
            "type": "string",
            "description": "Current employee headcount. Accepts a numeric string (e.g. \"3000\"). Sent as a string for Clay compatibility and coerced to integer at runtime."
          },
          "headcount_min": {
            "title": "Headcount Min",
            "type": "integer",
            "description": "Minimum headcount for the headcount_in_range signal."
          },
          "headcount_max": {
            "title": "Headcount Max",
            "type": "integer",
            "description": "Maximum headcount for the headcount_in_range signal."
          },
          "headcount_in_range": {
            "title": "Headcount In Range",
            "type": "boolean",
            "description": "Override: whether headcount is in your target range."
          },
          "employee_band": {
            "title": "Employee Band",
            "type": "string",
            "description": "Firmographic employee band from the Company Firmographic Enricher (Actor ID YlUtLWjfPpqykmB8g), e.g. \"201-500\". Scores via employee_band_match when it is in target_employee_bands."
          },
          "revenue_estimate": {
            "title": "Revenue Estimate",
            "type": "string",
            "description": "Estimated annual revenue in dollars from the Company Firmographic Enricher (Actor ID YlUtLWjfPpqykmB8g). Scores via revenue_in_range. Accepts a numeric string (e.g. \"50000000\"). Coerced to integer at runtime."
          },
          "hq_location": {
            "title": "HQ Location",
            "type": "string",
            "description": "Headquarters location from the Company Firmographic Enricher (Actor ID YlUtLWjfPpqykmB8g). Carried for reference; not currently scored."
          },
          "founded_year": {
            "title": "Founded Year",
            "type": "string",
            "description": "Year the company was founded, from the Company Firmographic Enricher (Actor ID YlUtLWjfPpqykmB8g). Carried for reference; not currently scored. Accepts a numeric string (e.g. \"2015\")."
          },
          "recently_funded": {
            "title": "Recently Funded",
            "type": "boolean",
            "description": "Override: whether the company was recently funded (within funded_within_days, default 540)."
          },
          "last_funding_date": {
            "title": "Last Funding Date",
            "type": "string",
            "description": "ISO date of last funding round (legacy field; latest_funding_date is preferred). Used to auto-detect recently_funded if the boolean is not set."
          },
          "latest_funding_date": {
            "title": "Latest Funding Date",
            "type": "string",
            "description": "ISO date of the latest funding round (from C1 Funding & Press Signal Scanner when it ships). Drives recently_funded against funded_within_days."
          },
          "latest_funding_amount": {
            "title": "Latest Funding Amount",
            "type": "string",
            "description": "Dollar amount of the latest funding round (from C1 when it ships). Scores via well_funded when at or above min_funding_amount (default 1000000). Accepts a numeric string (e.g. \"50000000\")."
          },
          "funding_stage": {
            "title": "Funding Stage",
            "type": "string",
            "description": "Funding stage (e.g. seed, series_a, series_b, growth). Used to infer recently_funded."
          },
          "industry": {
            "title": "Industry",
            "type": "string",
            "description": "The company's industry (from the Company Firmographic Enricher, Actor ID YlUtLWjfPpqykmB8g)."
          },
          "industry_match": {
            "title": "Industry Match",
            "type": "boolean",
            "description": "Override: whether the company's industry matches your target list."
          },
          "target_industries": {
            "title": "Target Industries",
            "type": "string",
            "description": "Comma-separated list of target industries for the industry_match signal."
          },
          "social_platforms_found": {
            "title": "Social Platforms Found",
            "type": "string",
            "description": "Number of official social platforms found, from the Company Social Presence Mapper (Actor ID 4k6CCemkgBDz18m2h). Scores via social_presence when at or above min_social_platforms (default 2). Accepts a numeric string."
          },
          "total_followers": {
            "title": "Total Followers",
            "type": "string",
            "description": "Total social followers across platforms, from the Company Social Presence Mapper (Actor ID 4k6CCemkgBDz18m2h). Scores via strong_social_following when at or above min_total_followers (default 1000). Accepts a numeric string."
          },
          "has_linkedin": {
            "title": "Has LinkedIn",
            "type": "string",
            "description": "Whether a company LinkedIn page was found, from the Company Social Presence Mapper (Actor ID 4k6CCemkgBDz18m2h) or the Domain to LinkedIn URL Resolver (Actor ID 3HtnSaqPHOg1Qg5gx). Contributes to social_presence. Accepts a boolean-like string."
          },
          "has_twitter": {
            "title": "Has Twitter / X",
            "type": "string",
            "description": "Whether a company X/Twitter profile was found, from the Company Social Presence Mapper (Actor ID 4k6CCemkgBDz18m2h). Contributes to social_presence. Accepts a boolean-like string."
          },
          "job_count": {
            "title": "Job Count",
            "type": "string",
            "description": "Number of open jobs found, from the Job Board Keyword Signal Scanner (Actor ID 4DvqpvhMR74NLcDDY). Scores via active_hiring_volume when at or above min_job_count (default 3). Accepts a numeric string."
          },
          "keyword_match_count": {
            "title": "Keyword Match Count",
            "type": "string",
            "description": "Number of target-keyword matches found, from the Job Board Keyword Signal Scanner (Actor ID 4DvqpvhMR74NLcDDY). Scores via keyword_signal_match when at or above min_keyword_matches (default 1). Accepts a numeric string."
          },
          "icp_description": {
            "title": "ICP Description",
            "type": "string",
            "description": "Describe your target ICP in plain English. Requires llm_api_key. Alternative to scoring_config for non-technical users."
          },
          "llm_api_key": {
            "title": "LLM API Key",
            "type": "string",
            "description": "Your OpenAI or Anthropic API key. Required when using icp_description mode. Transmitted to Apify infrastructure for the duration of the run only."
          },
          "llm_provider": {
            "title": "LLM Provider",
            "enum": [
              "openai",
              "anthropic"
            ],
            "type": "string",
            "description": "Which LLM provider to use when generating a scoring config from icp_description. Accepts openai (GPT-4o-mini) or anthropic (claude-haiku-4-5-20251001). Ignored if scoring_config is provided directly.",
            "default": "openai"
          },
          "max_charge_usd": {
            "title": "Maximum charge for this run (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Optional. The run stops before the next result that would take this run's charges over this amount, and keeps every result already charged. Leave empty to rely only on the maximum cost per run you set in Apify."
          },
          "source_tag": {
            "title": "Source Tag",
            "type": "string",
            "description": "Internal attribution tag set by Mamba Labs on published task examples. Not required, and nothing depends on it. Leave it empty."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}