{
  "openapi": "3.0.1",
  "info": {
    "title": "Expertise.com MSP Lead Scraper: Providers by City with Contacts",
    "description": "Scrape public Expertise.com MSP city pages into lead records with provider IDs, phones, websites, addresses, ratings, reviews, and change history. Export JSON or CSV to Google Sheets, Airtable, HubSpot, or n8n without browser automation. $0.00175 per provider record.",
    "version": "0.1",
    "x-build-id": "07g3a0HiuzWWYBV2p"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~expertise-msp-leads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-expertise-msp-leads-scraper",
        "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/getascraper~expertise-msp-leads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-expertise-msp-leads-scraper",
        "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/getascraper~expertise-msp-leads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-expertise-msp-leads-scraper",
        "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": {
          "startUrls": {
            "title": "Expertise.com MSP city URLs",
            "maxItems": 20,
            "type": "array",
            "description": "Public Expertise.com managed IT provider city pages only. Add up to 20 city pages for a multi-city lead list.",
            "items": {
              "type": "string"
            },
            "default": [
              "https://www.expertise.com/business/managed-service-providers/new-york/nyc"
            ]
          },
          "minExpertiseRating": {
            "title": "Minimum Expertise.com rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Keep providers whose public Expertise.com rating meets this optional 0 to 5 floor. Use 0 to disable the floor.",
            "default": 0
          },
          "minReviewCount": {
            "title": "Minimum review count",
            "minimum": 0,
            "type": "integer",
            "description": "Keep providers with at least this many public aggregate reviews when the source reports a count. Use 0 to disable the floor.",
            "default": 0
          },
          "featuredOnly": {
            "title": "Featured providers only",
            "type": "boolean",
            "description": "Keep only cards marked as featured by Expertise.com.",
            "default": false
          },
          "requirePhone": {
            "title": "Require public phone",
            "type": "boolean",
            "description": "Keep only provider cards that expose a public phone number.",
            "default": false
          },
          "requireWebsite": {
            "title": "Require public website",
            "type": "boolean",
            "description": "Keep only providers with a public website link supplied by Expertise.com.",
            "default": false
          },
          "requireDescription": {
            "title": "Require provider description",
            "type": "boolean",
            "description": "Keep only cards with a public provider description.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Direct HTTP is the default. Select Apify Proxy only when your workflow needs an alternate route.",
            "default": {
              "useApifyProxy": false
            }
          },
          "includeDescription": {
            "title": "Include provider descriptions",
            "type": "boolean",
            "description": "Keep the public Why choose this provider description in each row.",
            "default": false
          },
          "includeReviewSources": {
            "title": "Include review sources",
            "type": "boolean",
            "description": "Keep the public Google, Yelp, Facebook, or other review-source ratings and links when present.",
            "default": false
          },
          "includeImages": {
            "title": "Include provider images",
            "type": "boolean",
            "description": "Keep image URLs exposed by the provider card. No image URL is constructed when the source omits it.",
            "default": false
          },
          "includePublicWebsiteContacts": {
            "title": "Read public website contacts",
            "type": "boolean",
            "description": "Visit linked business websites to collect visible business emails and social links. No contacts are inferred.",
            "default": false
          },
          "maxWebsiteRequests": {
            "title": "Maximum website requests",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Bound public business website requests when contact enrichment is enabled.",
            "default": 20
          },
          "maxItems": {
            "title": "Maximum provider rows",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum provider rows emitted after filtering, deduplication, and optional enrichment.",
            "default": 20
          },
          "outputMode": {
            "title": "Output mode",
            "enum": [
              "snapshot",
              "snapshotAndChanges",
              "changesOnly"
            ],
            "type": "string",
            "description": "Snapshot emits current rows, snapshot and changes also emits removals after complete runs, and changes only omits unchanged rows.",
            "default": "snapshotAndChanges"
          },
          "stateName": {
            "title": "State name",
            "pattern": "^[A-Za-z0-9_-]+$",
            "minLength": 1,
            "maxLength": 60,
            "type": "string",
            "description": "Stable name used to compare this set of city pages across scheduled runs.",
            "default": "default"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}