{
  "openapi": "3.0.1",
  "info": {
    "title": "Local Business Leads – OpenStreetMap, Emails & Phones",
    "description": "Find local businesses by category and city: name, address, phone, website, opening hours, coordinates and social links from OpenStreetMap, plus optional emails and phones from each business's own website. Legal Google Maps alternative. $3 per 1,000 leads.",
    "version": "0.1",
    "x-build-id": "2LkOUUbZT0t253Ao6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dedicated_crest~osm-local-business-leads/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dedicated_crest-osm-local-business-leads",
        "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/dedicated_crest~osm-local-business-leads/runs": {
      "post": {
        "operationId": "runs-sync-dedicated_crest-osm-local-business-leads",
        "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/dedicated_crest~osm-local-business-leads/run-sync": {
      "post": {
        "operationId": "run-sync-dedicated_crest-osm-local-business-leads",
        "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": {
          "categories": {
            "title": "Business categories",
            "type": "array",
            "description": "What kind of businesses to find (or use Custom OpenStreetMap tags below). Plain words, not case-sensitive (plurals OK). Supported: restaurant, cafe, bar, fast food, bakery, ice cream, caterer, brewery, winery, nightclub, hotel, motel, guest house, dentist, doctor, clinic, hospital, pharmacy, veterinarian, physiotherapist, chiropractor, optician, psychologist, nursing home, hair salon, beauty salon, nail salon, barber, massage, spa, tattoo, gym, yoga studio, lawyer, accountant, tax advisor, notary, real estate agent, insurance, financial advisor, bank, architect, it company, marketing agency, consulting, employment agency, coworking, travel agency, moving company, storage rental, plumber, electrician, hvac, roofer, carpenter, painter, locksmith, gardener, photographer, printing shop, tailor, dry cleaner, car repair, car dealer, car wash, car rental, tyre shop, gas station, driving school, language school, music school, kindergarten, school, supermarket, convenience store, butcher, liquor store, florist, clothing store, shoe store, jewelry, furniture, hardware store, electronics, pet store, pet grooming, bookstore, bicycle shop, sports store, gift shop, cosmetics, vape shop, cannabis dispensary, funeral home, wedding venue.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations (city, state / country)",
            "type": "array",
            "description": "Cities, towns or neighbourhoods, e.g. \"Austin, TX\", \"Denver, Colorado\", \"Manchester, UK\", \"Lyon, France\". Adding the state or country picks the right place when names repeat. The search covers the official city boundary when OpenStreetMap has one, otherwise a radius around the town centre.",
            "items": {
              "type": "string"
            }
          },
          "customOsmTags": {
            "title": "Custom OpenStreetMap tags (advanced)",
            "type": "array",
            "description": "Extra filters as raw OSM tags, e.g. shop=bakery, office=lawyer, craft=* or cuisine~pizza. See wiki.openstreetmap.org/wiki/Map_features.",
            "items": {
              "type": "string"
            }
          },
          "latitude": {
            "title": "Latitude (radius search)",
            "type": "string",
            "description": "Optional: search around a point instead of (or as well as) the locations above, e.g. 40.7128."
          },
          "longitude": {
            "title": "Longitude (radius search)",
            "type": "string",
            "description": "e.g. -74.0060"
          },
          "radiusKm": {
            "title": "Radius in km",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Used with latitude + longitude.",
            "default": 5
          },
          "onlyWithContact": {
            "title": "Only businesses with contact info",
            "enum": [
              "none",
              "phoneOrWebsite",
              "phone",
              "website",
              "email",
              "any"
            ],
            "type": "string",
            "description": "Skip businesses without these details. With website enrichment on, emails/phones found on the website count too.",
            "default": "none"
          },
          "enrichWebsites": {
            "title": "Find emails, phones & social links on the business website",
            "type": "boolean",
            "description": "Visits each business's own website (homepage + up to 2 contact/about pages), respecting robots.txt, and adds emails, phone numbers and Facebook/Instagram/LinkedIn/X/YouTube/TikTok links. Charged as a separate event only when the website was reached.",
            "default": false
          },
          "maxPagesPerWebsite": {
            "title": "Max pages per website",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Homepage plus contact/about/impressum pages.",
            "default": 3
          },
          "requireName": {
            "title": "Only named businesses",
            "type": "boolean",
            "description": "Skip map objects without a name.",
            "default": true
          },
          "sortByCompleteness": {
            "title": "Contact-rich leads first",
            "type": "boolean",
            "description": "Within each location, return businesses with phone/website/email/address first.",
            "default": true
          },
          "includeAllTags": {
            "title": "Include all raw OSM tags",
            "type": "boolean",
            "description": "Adds an osmTags object with every OpenStreetMap tag (payment methods, opening dates, socials, etc.).",
            "default": false
          },
          "overpassEndpoints": {
            "title": "Overpass API endpoints (advanced)",
            "type": "array",
            "description": "Leave empty to use public instances that allow use in any project (VK Maps, Private.coffee). Put your own or a paid Overpass server here for faster, more reliable large runs.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max leads",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many leads. The run also stops cleanly at your Maximum cost per run.",
            "default": 100
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}