{
  "openapi": "3.0.1",
  "info": {
    "title": "GoodFirms B2B Companies & Software Scraper",
    "description": "GoodFirms scraper & API: find B2B agencies & software by service category and location — company name, rating & reviews, hourly rate, minimum budget, team size, founded year, location, services and website. B2B vendor research and agency lead generation — fast, no login.",
    "version": "0.0",
    "x-build-id": "DLJ6nHUGh1v2Wu8tC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/haketa~goodfirms-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-haketa-goodfirms-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/haketa~goodfirms-scraper/runs": {
      "post": {
        "operationId": "runs-sync-haketa-goodfirms-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/haketa~goodfirms-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-haketa-goodfirms-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": {
          "mode": {
            "title": "What do you want to scrape?",
            "enum": [
              "auto",
              "companies",
              "software"
            ],
            "type": "string",
            "description": "Pick 'Companies' for B2B agencies (web dev, mobile, marketing…), 'Software' for SaaS products (CRM, project management…), or 'Auto' to detect from each Start URL.",
            "default": "auto"
          },
          "serviceCategorySlugs": {
            "title": "Company service categories",
            "type": "array",
            "description": "Pick one or more agency categories to discover B2B companies from. Great for agency research and lead generation. Leave empty for a popular, ready-to-go mix.",
            "items": {
              "type": "string",
              "enum": [
                "web-development-agency",
                "mobile-app-development-agency",
                "software-development-agency",
                "digital-marketing-agency",
                "seo-agency",
                "ecommerce-development-agency",
                "web-design-agency",
                "ui-ux-design-agency",
                "app-development-companies",
                "ios-app-development-agency",
                "android-app-development-agency",
                "blockchain-development-agency",
                "ai-development-agency",
                "iot-development-agency",
                "ar-vr-development-agency",
                "game-development-companies",
                "social-media-marketing-agency",
                "content-marketing-agency",
                "ppc-agency",
                "branding-agency",
                "advertising-agency",
                "video-production-agency",
                "cloud-computing-companies",
                "devops-consulting-companies",
                "cybersecurity-companies",
                "data-analytics-companies",
                "big-data-analytics-companies",
                "it-services-companies",
                "staff-augmentation-companies",
                "salesforce-consulting-companies"
              ],
              "enumTitles": [
                "Web Development",
                "Mobile App Development",
                "Software Development",
                "Digital Marketing",
                "SEO",
                "eCommerce Development",
                "Web Design",
                "UI/UX Design",
                "App Development",
                "iOS App Development",
                "Android App Development",
                "Blockchain Development",
                "AI Development",
                "IoT Development",
                "AR/VR Development",
                "Game Development",
                "Social Media Marketing",
                "Content Marketing",
                "PPC / Paid Ads",
                "Branding",
                "Advertising",
                "Video Production",
                "Cloud Computing",
                "DevOps Consulting",
                "Cybersecurity",
                "Data Analytics",
                "Big Data Analytics",
                "IT Services",
                "Staff Augmentation",
                "Salesforce Consulting"
              ]
            },
            "default": []
          },
          "countrySlugs": {
            "title": "Countries / regions (optional)",
            "type": "array",
            "description": "Narrow company discovery to specific countries or US states. Leave empty to scrape the global category (all locations).",
            "items": {
              "type": "string",
              "enum": [
                "us",
                "gb",
                "ca",
                "au",
                "in",
                "de",
                "fr",
                "nl",
                "es",
                "it",
                "ua",
                "pl",
                "ae",
                "sg",
                "br",
                "mx",
                "ph",
                "california",
                "new-york",
                "texas",
                "florida",
                "illinois"
              ],
              "enumTitles": [
                "United States",
                "United Kingdom",
                "Canada",
                "Australia",
                "India",
                "Germany",
                "France",
                "Netherlands",
                "Spain",
                "Italy",
                "Ukraine",
                "Poland",
                "United Arab Emirates",
                "Singapore",
                "Brazil",
                "Mexico",
                "Philippines",
                "California (US)",
                "New York (US)",
                "Texas (US)",
                "Florida (US)",
                "Illinois (US)"
              ]
            },
            "default": []
          },
          "softwareCategorySlugs": {
            "title": "Software categories",
            "type": "array",
            "description": "Pick one or more SaaS categories to discover software products from. Used when mode is 'Software' or 'Auto'.",
            "items": {
              "type": "string",
              "enum": [
                "crm-software",
                "project-management-software",
                "accounting-software",
                "hr-software",
                "erp-software",
                "helpdesk-software",
                "live-chat-software",
                "email-marketing-software",
                "marketing-automation-software",
                "social-media-management-software",
                "ecommerce-software",
                "pos-software",
                "inventory-management-software",
                "payroll-software",
                "applicant-tracking-software",
                "learning-management-system-software",
                "video-conferencing-software",
                "business-intelligence-software",
                "cybersecurity-software",
                "content-management-system-software"
              ],
              "enumTitles": [
                "CRM",
                "Project Management",
                "Accounting",
                "HR",
                "ERP",
                "Help Desk",
                "Live Chat",
                "Email Marketing",
                "Marketing Automation",
                "Social Media Management",
                "eCommerce Platform",
                "Point of Sale (POS)",
                "Inventory Management",
                "Payroll",
                "Applicant Tracking (ATS)",
                "Learning Management (LMS)",
                "Video Conferencing",
                "Business Intelligence",
                "Cybersecurity",
                "CMS"
              ]
            },
            "default": []
          },
          "employeesFilter": {
            "title": "Team size",
            "enum": [
              "",
              "2-9",
              "10-49",
              "50-249",
              "250-999",
              "1000-9999",
              "10000+"
            ],
            "type": "string",
            "description": "Only include companies in this employee range.",
            "default": ""
          },
          "hourlyRateFilter": {
            "title": "Hourly rate (USD)",
            "enum": [
              "",
              "<25",
              "25-49",
              "50-99",
              "100-149",
              "150-199",
              "200+"
            ],
            "type": "string",
            "description": "Only include companies in this hourly rate bracket.",
            "default": ""
          },
          "minReviews": {
            "title": "Minimum reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Only include companies with at least this many verified reviews. 0 = no minimum.",
            "default": 0
          },
          "scrapeReviews": {
            "title": "Include client reviews",
            "type": "boolean",
            "description": "Also fetch verified client reviews (rating, review text, reviewer, project cost & duration). Slower and uses more requests.",
            "default": false
          },
          "scrapeProfileDetails": {
            "title": "Include full profile details",
            "type": "boolean",
            "description": "Visit each profile page for richer data (services breakdown, description, contact info). Turn off for fast list-only scraping.",
            "default": true
          },
          "maxRecords": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many records. Set to 0 for no limit.",
            "default": 0
          },
          "maxPagesPerCategory": {
            "title": "Max pages per category",
            "minimum": 1,
            "type": "integer",
            "description": "How many listing pages to crawl per category/location (≈10 companies per page).",
            "default": 5
          },
          "startUrls": {
            "title": "Start URLs (advanced)",
            "type": "array",
            "description": "Optional. Paste any GoodFirms page URL — a category, a company profile, or a software product. Most users can leave this empty and just pick categories above.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "companySlugs": {
            "title": "Specific company slugs (advanced)",
            "type": "array",
            "description": "Optional. Scrape specific company profiles directly. The slug is the part after /company/ in a GoodFirms URL.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "softwareSlugs": {
            "title": "Specific software slugs (advanced)",
            "type": "array",
            "description": "Optional. Scrape specific software products directly. The slug is the part after /software/ in a GoodFirms URL.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "requestDelay": {
            "title": "Request delay (ms)",
            "minimum": 0,
            "type": "integer",
            "description": "Delay between requests. Higher values are gentler on GoodFirms.",
            "default": 1200
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many requests to run in parallel. Keep this low (1–3) for the most reliable results.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Residential proxies give the most reliable results on GoodFirms. This is on by default — keep it as is unless you know what you are doing.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}