{
  "openapi": "3.0.1",
  "info": {
    "title": "Bing Maps Scraper - Contacts, Ratings, Reviews & Photos",
    "description": "Extract business name, street address, phone, website, coordinates and category tree from Bing Maps. Add ratings, weekly opening hours, reviews and original full-size photos per place. Sweep a whole city by category or draw your own area. 36 fields per place. Export JSON, CSV or Excel.",
    "version": "0.0",
    "x-build-id": "0cBpRWMauxOYAzXsH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zen-studio~bing-maps-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zen-studio-bing-maps-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/zen-studio~bing-maps-scraper/runs": {
      "post": {
        "operationId": "runs-sync-zen-studio-bing-maps-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/zen-studio~bing-maps-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-zen-studio-bing-maps-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": {
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "What kind of places to collect. Pick from the suggestions or type any category name: broad ones like <code>Health and medical</code> pull in everything beneath them (Doctor, Dentist, Physical therapy), narrow ones like <code>Dentist</code> stay tight.<br><br>Add several to collect them all in one run. <b>Leave empty to collect every business in the area</b>, which sweeps all 44 top-level categories so the whole search radius is covered.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "__all__",
                "Retail",
                "Professional services",
                "Restaurant",
                "Business to business",
                "Public service and government",
                "Health and medical",
                "Real estate",
                "Education",
                "Private establishments and corporates",
                "Financial service",
                "Attractions and activities",
                "Arts and entertainment",
                "Lawyer",
                "Transportation",
                "Travel",
                "Legal services",
                "Event planning",
                "Accommodation",
                "Active life",
                "Beauty and spa",
                "Automotive",
                "Parking",
                "Construction services",
                "Travel agents",
                "Home service",
                "Religious organization",
                "Food",
                "Mass media",
                "Contractor",
                "Landmark and historical building",
                "Park",
                "Employment agencies",
                "IT service and computer repair",
                "Structure and geography",
                "Car dealer",
                "Pets",
                "Tours",
                "Auto repair",
                "Laundry services",
                "Internet service provider",
                "Sewing and alterations",
                "Storage facility",
                "Funeral services and cemeteries",
                "Corporate office",
                "Condominium",
                "Clothing store",
                "Software development",
                "Jewelry store",
                "Association/Organization",
                "Cafe",
                "Business consulting",
                "Real estate agent",
                "Hotel",
                "Wholesaler",
                "Community services/non-profits",
                "Marketing agency",
                "Apartments",
                "E commerce service",
                "Dentist",
                "Shoe store",
                "Bakery",
                "Bar",
                "Video/film production",
                "Furniture store",
                "Insurance agency",
                "Photographer",
                "Doctor",
                "Sightseeing tour agency",
                "Business advertising",
                "Gift shop",
                "Psychologist",
                "Financial advising",
                "Women's clothing store",
                "Psychotherapist",
                "Theaters and performance venues",
                "Building contractor",
                "Accountant",
                "Courier and delivery services",
                "Shopping center",
                "Freight and cargo service",
                "College/university",
                "Gym",
                "Cosmetic and beauty supplies",
                "Building supply store",
                "Sculpture/Statue",
                "Home goods store",
                "Japanese restaurant",
                "Advertising agency",
                "Florist",
                "Pharmacy",
                "Art gallery",
                "Interior design",
                "Fashion accessories store",
                "Fast food restaurant",
                "Hair salon",
                "Grocery store",
                "Web designer",
                "ATMs",
                "Supermarket",
                "Graphic designer",
                "Language school",
                "Architect",
                "Bank/credit union",
                "Federal government offices",
                "Auto parts and supply store",
                "Bookstore",
                "Physical therapy",
                "Hospital",
                "Venue and event space",
                "Security services"
              ]
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Where to search. A city, neighborhood, or address: <code>Berlin, Germany</code>, <code>Soho, London</code>, <code>Times Square, New York</code>.<br><br>More specific is better. Add a country when the name is ambiguous: <code>Springfield</code> alone lands somewhere you did not intend."
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many places.",
            "default": 100
          },
          "searchRadiusKm": {
            "title": "Search radius (km)",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How far around <b>Location</b> to search, in kilometres. A city centre is well covered by <code>5</code>; a whole metro area needs <code>15</code>–<code>25</code>.<br><br>Ignored when you draw a <b>Custom search area</b>: the shape defines its own extent.",
            "default": 5
          },
          "customGeolocation": {
            "title": "Custom search area (GeoJSON)",
            "type": "object",
            "description": "GeoJSON defining the exact area to search. Accepts a Point, a Polygon, or a Feature / FeatureCollection wrapping them (what geojson.io and most map-drawing tools export). Coordinate order is <code>[longitude, latitude]</code>.<br><br>When set, this overrides <b>Location</b>. A Point uses <b>Search radius</b>; a Polygon uses its own extent."
          },
          "nameContains": {
            "title": "Name contains",
            "type": "string",
            "description": "Keep only places whose name contains this text. Leave blank to keep them all.",
            "default": ""
          },
          "searchMatching": {
            "title": "Name match strictness",
            "enum": [
              "all",
              "only_includes",
              "only_exact"
            ],
            "type": "string",
            "description": "How strictly the place name has to match <b>Name contains</b>. Ignored when that field is blank.",
            "default": "all"
          },
          "websiteFilter": {
            "title": "Website filter",
            "enum": [
              "all",
              "with_website",
              "without_website"
            ],
            "type": "string",
            "description": "Keep places with a website, without one, or both. <b>Only places without a website</b> is the usual pick for agency lead lists.",
            "default": "all"
          },
          "minRating": {
            "title": "Minimum rating",
            "enum": [
              "",
              "2.0",
              "2.5",
              "3.0",
              "3.5",
              "4.0",
              "4.5"
            ],
            "type": "string",
            "description": "Drop places rated below this. <b>Unrated places are excluded too</b>: a place with no rating cannot satisfy a minimum, and only about a third of places carry one.<br><br>Turns on <b>Place details</b> automatically, since ratings come from there.",
            "default": ""
          },
          "includeDetails": {
            "title": "Place details",
            "type": "boolean",
            "description": "Adds <b>rating</b>, <b>review count</b>, <b>review source</b>, <b>weekly opening hours</b>, <b>open/closed right now</b>, <b>hotel star class</b>, <b>chain ID</b> and the place's <b>action link</b> (menu, reservations, appointments or tickets).<br><br>Opening hours and open/closed status are available for roughly <b>half</b> of places; rating for about a third. Collected per place and billed separately, so a large run takes longer. Leave off if you only need contact details.",
            "default": false
          },
          "includeDescription": {
            "title": "Business description",
            "type": "boolean",
            "description": "Adds the <b>business description</b> and a <b>claimed by owner</b> flag.<br><br>Available for roughly a quarter of places. The slowest of the enrichments, so prefer it for shortlists over bulk runs.",
            "default": false
          },
          "includeReviews": {
            "title": "Customer reviews",
            "type": "boolean",
            "description": "Adds up to <b>3 recent reviews</b> per place: text, reviewer name, star rating, date and a link to the full review, plus the <b>star breakdown</b> and the provider's total review count.<br><br>Reviews are sourced from <b>Tripadvisor</b> (about two thirds of places) and <b>Yelp</b> (about a third); hotels also carry Booking.com and Expedia. Available for roughly a third of places.",
            "default": false
          },
          "maxPhotosPerPlace": {
            "title": "Photos per place",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "How many photos to collect per place. Each photo comes with the <b>original full-size image URL</b>, pixel dimensions, a caption and the source site (Yelp, Booking.com, Tripadvisor, the hotel's own media library).<br><br><code>0</code> = no photos. Places carry a median of 17 photos, some over 100; asking for more than 20 slows the run.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}