{
  "openapi": "3.0.1",
  "info": {
    "title": "Germany Property Listings API - Rent, Buy, Commercial",
    "description": "Search live German and Austrian property listings by region or radius across twenty types, from apartments and houses to offices, retail, plots and auctions, with filters on price, space, rooms, year and equipment. Plus full listings with photos, place lookup, region counts and mortgage rates.",
    "version": "0.1",
    "x-build-id": "LrifzFzpHRrKEbHr0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~germany-property-listings-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-germany-property-listings-api",
        "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/nabeelbaghoor~germany-property-listings-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-germany-property-listings-api",
        "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/nabeelbaghoor~germany-property-listings-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-germany-property-listings-api",
        "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": {
          "service": {
            "title": "What to read",
            "enum": [
              "searchRegion",
              "searchRadius",
              "expose",
              "exposeAttachments",
              "geoSuggestion",
              "geoEntity",
              "geoHierarchy",
              "statistic",
              "financingMarketData"
            ],
            "type": "string",
            "description": "One service per run. The two searches return listings, by a radius around a point or by a region code. The listing services read one property in full and the photos, floor plans and videos on it. The place services resolve a name to a region code or coordinates and let you walk the hierarchy from continent down to quarter. The statistics service counts what a region holds, and the financing service returns average mortgage rates.",
            "default": "searchRegion"
          },
          "realEstateType": {
            "title": "Real estate type",
            "enum": [
              "apartmentRent",
              "apartmentBuy",
              "houseRent",
              "houseBuy",
              "flatShareRoom",
              "shortTermAccomodation",
              "assistedLiving",
              "seniorCare",
              "compulsoryAuction",
              "investment",
              "office",
              "store",
              "gastronomy",
              "industry",
              "specialPurpose",
              "livingBuySite",
              "livingRentSite",
              "tradeSite",
              "garageBuy",
              "garageRent"
            ],
            "type": "string",
            "description": "Which kind of property the search looks for. This choice also decides which filters the provider accepts, so a filter that belongs to another type is left off the request rather than sent: this API can answer an unknown criterion with an empty result list rather than an error.",
            "default": "apartmentRent"
          },
          "geoCodes": {
            "title": "Region codes",
            "type": "array",
            "description": "One region code per line, for the region search and the statistics service. A code is the provider's own geocode id, built from continent, country, region, city and quarter ids run together, for example 1276003001014. Use the place lookup service to find the code for a name.",
            "items": {
              "type": "string"
            }
          },
          "geoCoordinates": {
            "title": "Coordinates and radius",
            "type": "array",
            "description": "One area per line for the radius search, written as latitude;longitude;radius with the radius in kilometres, for example 52.512303;13.431191;1. Latitude comes first, which is how people write coordinates, and a line written with commas is accepted and rewritten. Radius search does not reach properties outside Germany and Austria.",
            "items": {
              "type": "string"
            }
          },
          "exposeIds": {
            "title": "Listing ids",
            "type": "array",
            "description": "One listing id per line, for the full listing and attachment services. Run a search first to collect them.",
            "items": {
              "type": "string"
            }
          },
          "geoQueries": {
            "title": "Place search terms",
            "type": "array",
            "description": "One term per line for the place lookup: a town, a district, a postcode, a street or a station name. Each becomes its own lookup.",
            "items": {
              "type": "string"
            }
          },
          "geoEntityIds": {
            "title": "Place ids",
            "type": "array",
            "description": "One place id per line, as the place lookup returns them. This resolves an id to its type, label, address and, when you ask for it, its region code or coordinates.",
            "items": {
              "type": "string"
            }
          },
          "geoCountry": {
            "title": "Country for place lookup",
            "enum": [
              "DEU",
              "AUT"
            ],
            "type": "string",
            "description": "Which country's places to search. The provider covers Germany and Austria for the place lookup.",
            "default": "DEU"
          },
          "geoEntityTypes": {
            "title": "Place kinds to return",
            "type": "array",
            "description": "Which kinds of place the lookup should consider. Leave empty and the provider uses its own default set. Postcode with quarter is rarely what you want: it combines a postcode with a district in a way real addresses usually do not.",
            "items": {
              "type": "string",
              "enum": [
                "country",
                "region",
                "city",
                "district",
                "quarterOrTown",
                "quarter",
                "postcode",
                "postcodeWithQuarter",
                "street",
                "trainStation",
                "address",
                "customArea"
              ],
              "enumTitles": [
                "Country",
                "Federal state",
                "City",
                "County or rural district",
                "Borough, town or village",
                "Quarter within a borough",
                "Postcode",
                "Postcode with quarter",
                "Street section",
                "Train station",
                "Address",
                "Custom area"
              ]
            }
          },
          "geoSuggestionLimit": {
            "title": "Places per lookup",
            "minimum": 1,
            "maximum": 120,
            "type": "integer",
            "description": "How many suggestions one lookup should return. The provider caps this at 120 and uses 50 when it is left blank."
          },
          "geoCoding": {
            "title": "What to add to a place",
            "enum": [
              "None",
              "GeoId",
              "Lambert",
              "WGS84"
            ],
            "type": "string",
            "description": "Whether the single place service should add the region code or the coordinates of the place's centre to its basic details."
          },
          "geoHierarchyIds": {
            "title": "Geo hierarchy path",
            "type": "array",
            "description": "One level id per line, from continent downwards: continent, country, region, city, quarter. The depth is the request. Leave it empty to list the continents, give one id to list that continent's countries, two to list a country's regions, and so on. Five ids name one quarter outright.",
            "items": {
              "type": "string"
            }
          },
          "statisticRealEstateTypes": {
            "title": "Types to count",
            "type": "array",
            "description": "Which real estate types the statistics service should count in the region. Leave empty to count all of them.",
            "items": {
              "type": "string"
            }
          },
          "priceMin": {
            "title": "Price from",
            "minimum": 0,
            "type": "number",
            "description": "Lowest price to accept. What the price means depends on the type and on the price basis below: a monthly rent, a purchase price, a rent per square metre, or a lease."
          },
          "priceMax": {
            "title": "Price to",
            "minimum": 0,
            "type": "number",
            "description": "Highest price to accept. Either bound can be left blank, which the provider reads as no limit on that side."
          },
          "priceType": {
            "title": "Price basis",
            "enum": [
              "rentpermonth",
              "budgetrent",
              "rentpersqm",
              "buy",
              "rent",
              "lease",
              "longlease"
            ],
            "type": "string",
            "description": "What the price range refers to, for the types that offer a choice. Rent per month and budget rent apply to residential rentals, where budget rent is the provider's combined figure across every cost on the offer. Rent per square metre, buy, lease and long lease apply to the commercial types and plots. Left blank, no price basis is filtered on."
          },
          "livingSpaceMin": {
            "title": "Living space from, square metres",
            "minimum": 0,
            "type": "number",
            "description": "Smallest living space to accept. Accepted by the apartment, house and flat share types."
          },
          "livingSpaceMax": {
            "title": "Living space to, square metres",
            "minimum": 0,
            "type": "number",
            "description": "Largest living space to accept."
          },
          "roomsMin": {
            "title": "Rooms from",
            "minimum": 0,
            "type": "number",
            "description": "Fewest rooms to accept. Accepted by the apartment, house and short term accommodation types."
          },
          "roomsMax": {
            "title": "Rooms to",
            "minimum": 0,
            "type": "number",
            "description": "Most rooms to accept."
          },
          "constructionYearMin": {
            "title": "Built from year",
            "minimum": 1000,
            "maximum": 2100,
            "type": "integer",
            "description": "Earliest construction year to accept. Accepted by the apartment and house types."
          },
          "constructionYearMax": {
            "title": "Built to year",
            "minimum": 1000,
            "maximum": 2100,
            "type": "integer",
            "description": "Latest construction year to accept."
          },
          "groundMin": {
            "title": "Plot from, square metres",
            "minimum": 0,
            "type": "number",
            "description": "Smallest plot to accept, for houses to buy or rent."
          },
          "groundMax": {
            "title": "Plot to, square metres",
            "minimum": 0,
            "type": "number",
            "description": "Largest plot to accept, for houses to buy or rent."
          },
          "plotAreaMin": {
            "title": "Site area from, square metres",
            "minimum": 0,
            "type": "number",
            "description": "Smallest site to accept, for the residential and commercial plot types."
          },
          "plotAreaMax": {
            "title": "Site area to, square metres",
            "minimum": 0,
            "type": "number",
            "description": "Largest site to accept, for the plot types."
          },
          "totalFloorSpaceMin": {
            "title": "Total floor space from, square metres",
            "minimum": 0,
            "type": "number",
            "description": "Smallest total floor space to accept. Accepted by the gastronomy, industrial, special purpose and store types."
          },
          "totalFloorSpaceMax": {
            "title": "Total floor space to, square metres",
            "minimum": 0,
            "type": "number",
            "description": "Largest total floor space to accept."
          },
          "netFloorSpaceMin": {
            "title": "Net floor space from, square metres",
            "minimum": 0,
            "type": "number",
            "description": "Smallest net floor space to accept. Accepted by the industrial, investment, office and store types."
          },
          "netFloorSpaceMax": {
            "title": "Net floor space to, square metres",
            "minimum": 0,
            "type": "number",
            "description": "Largest net floor space to accept."
          },
          "marketValueMin": {
            "title": "Market value from",
            "minimum": 0,
            "type": "number",
            "description": "Lowest market value to accept, for compulsory auction listings."
          },
          "marketValueMax": {
            "title": "Market value to",
            "minimum": 0,
            "type": "number",
            "description": "Highest market value to accept, for compulsory auction listings."
          },
          "parkingSpacesMin": {
            "title": "Parking spaces from",
            "minimum": 0,
            "type": "integer",
            "description": "Fewest parking spaces to accept, for office listings."
          },
          "parkingSpacesMax": {
            "title": "Parking spaces to",
            "minimum": 0,
            "type": "integer",
            "description": "Most parking spaces to accept, for office listings."
          },
          "bedsMin": {
            "title": "Beds from",
            "minimum": 0,
            "type": "integer",
            "description": "Fewest beds to accept, for gastronomy listings."
          },
          "bedsMax": {
            "title": "Beds to",
            "minimum": 0,
            "type": "integer",
            "description": "Most beds to accept, for gastronomy listings."
          },
          "seatsMin": {
            "title": "Seats from",
            "minimum": 0,
            "type": "integer",
            "description": "Fewest seats to accept, for gastronomy listings."
          },
          "seatsMax": {
            "title": "Seats to",
            "minimum": 0,
            "type": "integer",
            "description": "Most seats to accept, for gastronomy listings."
          },
          "pricePerSqmMin": {
            "title": "Price per square metre from",
            "minimum": 0,
            "type": "number",
            "description": "Lowest price per square metre to accept, for investment listings."
          },
          "pricePerSqmMax": {
            "title": "Price per square metre to",
            "minimum": 0,
            "type": "number",
            "description": "Highest price per square metre to accept, for investment listings."
          },
          "priceMultiplierMin": {
            "title": "Price multiplier from",
            "minimum": 0,
            "type": "number",
            "description": "Lowest price multiplier to accept, for investment listings. The provider calculates it as the price divided by the annual net cold rent."
          },
          "priceMultiplierMax": {
            "title": "Price multiplier to",
            "minimum": 0,
            "type": "number",
            "description": "Highest price multiplier to accept, for investment listings."
          },
          "equipment": {
            "title": "Equipment",
            "type": "array",
            "description": "Features the property must have. Which of these a type accepts differs: the residential types document built-in kitchen, parking, balcony, garden, lift, guest toilet, cellar, wheelchair access, assisted living and lodger flat; the commercial types document high voltage, air conditioning, network cabling, goods lift, car lift, crane runway and ramp. One line per feature, spelled as the provider spells it.",
            "items": {
              "type": "string"
            }
          },
          "apartmentTypes": {
            "title": "Apartment types",
            "type": "array",
            "description": "Which apartment kinds to accept, for the apartment types. The provider documents apartment, groundfloor, halfbasement, loft, maisonette, other, penthouse, raisedgroundfloor, roofstorey and terracedflat.",
            "items": {
              "type": "string"
            }
          },
          "buildingTypes": {
            "title": "Building types",
            "type": "array",
            "description": "Which building kinds to accept, for the house types. The provider documents singlefamilyhouse, midterracehouse, endterracehouse, multifamilyhouse, bungalow, farmhouse, semidetachedhouse, villa, castlemanorhouse, specialrealestate and otherrealestate.",
            "items": {
              "type": "string"
            }
          },
          "heatingTypes": {
            "title": "Heating types",
            "type": "array",
            "description": "Which heating kinds to accept, for the apartment and house types. The provider documents stove, selfcontainedcentral and central.",
            "items": {
              "type": "string"
            }
          },
          "constructionPhaseTypes": {
            "title": "Construction phase",
            "type": "array",
            "description": "Which construction phases to accept, for houses to buy. The provider documents projected, underconstruction, completed and noinformation.",
            "items": {
              "type": "string"
            }
          },
          "officeTypes": {
            "title": "Office types",
            "type": "array",
            "description": "Which office kinds to accept. The provider documents loft, studio, office, officefloor, officebuilding, officecentre, officestoragebuilding, surgery, surgeryfloor, surgerybuilding, commercialcentre, livingandcommercialbuilding and officeandcommercialbuilding.",
            "items": {
              "type": "string"
            }
          },
          "garageTypes": {
            "title": "Garage types",
            "type": "array",
            "description": "Which garage kinds to accept. The provider documents garage and streetparking.",
            "items": {
              "type": "string"
            }
          },
          "gastronomyTypes": {
            "title": "Gastronomy types",
            "type": "array",
            "description": "Which gastronomy kinds to accept. The provider documents guestshouse, clubdisco, barlounge, cafe, hotelresidence, tavern, hotelgarni, hotel, restaurant, pension and bungalow.",
            "items": {
              "type": "string"
            }
          },
          "industryTypes": {
            "title": "Industrial types",
            "type": "array",
            "description": "Which industrial kinds to accept. The provider documents showroomspace, hall, highlackstorage, industryhall, industryhallwithopenarea, coldstorage, multideckcabinetstorage, storagewithopenarea, storagearea, storagehall, servicearea, shippingstorage and repairshop.",
            "items": {
              "type": "string"
            }
          },
          "investmentTypes": {
            "title": "Investment types",
            "type": "array",
            "description": "Which investment kinds to accept. The provider documents singlefamilyhouse, multifamilyhouse, freeholdflat, shoppingcentre, restaurant, hotel, leisurefacility, commercialunit, officebuilding, commercialbuilding, commercialproperty, hallstorage, industrialproperty, shopsalesfloor, servicecentre, other, supermarket, livingbusinesshouse and housingestate.",
            "items": {
              "type": "string"
            }
          },
          "storeTypes": {
            "title": "Store types",
            "type": "array",
            "description": "Which retail kinds to accept. The provider documents showroomspace, shoppingcentre, factoryoutlet, departmentstore, kiosk, store, selfservicemarket, salesarea and saleshall.",
            "items": {
              "type": "string"
            }
          },
          "specialPurposeTypes": {
            "title": "Special purpose types",
            "type": "array",
            "description": "Which special purpose kinds to accept. The provider documents residence, farm, horsefarm, vineyard, repairshop, leisurefacility, industrialarea, specialestate and commercialcentre.",
            "items": {
              "type": "string"
            }
          },
          "siteConstructibleTypes": {
            "title": "Site constructibility",
            "type": "array",
            "description": "Which constructibility categories to accept, for the residential plot types. The provider documents externalarea, constructionplan and neighbourconstruction.",
            "items": {
              "type": "string"
            }
          },
          "siteDevelopmentTypes": {
            "title": "Site development",
            "type": "array",
            "description": "Which development states to accept, for the residential plot types. The provider documents developed, developedpartially and notdeveloped.",
            "items": {
              "type": "string"
            }
          },
          "utilizationTradeSites": {
            "title": "Commercial plot use",
            "type": "array",
            "description": "Which intended uses to accept, for commercial plots. The provider documents leisure, agricultureforestry and trade.",
            "items": {
              "type": "string"
            }
          },
          "auctionObjectTypes": {
            "title": "Auction object types",
            "type": "array",
            "description": "Which auction object kinds to accept. The provider documents freeholdflat, familyhouse, businessandyield, lot and garageandother.",
            "items": {
              "type": "string"
            }
          },
          "auctionTypes": {
            "title": "Auction types",
            "type": "array",
            "description": "Which auction kinds to accept. The provider documents recurrenceappointment and splittingauction.",
            "items": {
              "type": "string"
            }
          },
          "rentDuration": {
            "title": "Rental term",
            "type": "array",
            "description": "Which rental terms to accept, for office listings. The provider documents weekly, monthly, yearly and longterm.",
            "items": {
              "type": "string"
            }
          },
          "rented": {
            "title": "Currently rented out",
            "enum": [
              "true",
              "false"
            ],
            "type": "string",
            "description": "For apartments and houses to buy, whether the property comes with a sitting tenant. Left blank, both are returned."
          },
          "newBuilding": {
            "title": "New build only",
            "type": "boolean",
            "description": "Only buildings put up in the last three years, as the provider defines a new build.",
            "default": false
          },
          "buildingProject": {
            "title": "Part of a development project only",
            "type": "boolean",
            "description": "Only properties that belong to a larger development project.",
            "default": false
          },
          "freeOfCourtageOnly": {
            "title": "No commission only",
            "type": "boolean",
            "description": "Only listings that carry no buyer or tenant commission.",
            "default": false
          },
          "shortTermConstructible": {
            "title": "Short term constructible only",
            "type": "boolean",
            "description": "Only plots that can be built on in the short term.",
            "default": false
          },
          "buildingPermission": {
            "title": "With building permission only",
            "type": "boolean",
            "description": "Only plots that already hold a building permission.",
            "default": false
          },
          "flatShareSize": {
            "title": "Flat share size",
            "type": "string",
            "description": "How many people share the flat, for flat share rooms. The provider takes 2 to 10 or greaterthenten."
          },
          "gender": {
            "title": "Flat share gender",
            "enum": [
              "female",
              "male"
            ],
            "type": "string",
            "description": "Which gender the flat share is looking for, where the advertiser states one."
          },
          "furniture": {
            "title": "Furnished",
            "enum": [
              "true",
              "false"
            ],
            "type": "string",
            "description": "Whether the room or short term accommodation comes furnished."
          },
          "smokingAllowed": {
            "title": "Smoking",
            "enum": [
              "allowed",
              "ownroomonly",
              "unwanted"
            ],
            "type": "string",
            "description": "The smoking rule in a flat share, as the advertiser sets it."
          },
          "startRentalDate": {
            "title": "Available from",
            "type": "string",
            "description": "Earliest move-in date, as an ISO date such as 2026-11-01. Accepted by flat share rooms and short term accommodation."
          },
          "rentalDuration": {
            "title": "Rental duration, months",
            "type": "string",
            "description": "How many months the rental should run, for flat share rooms. The provider takes 1 to 100."
          },
          "shortTermAccommodationType": {
            "title": "Short term accommodation kind",
            "enum": [
              "flat",
              "house",
              "room"
            ],
            "type": "string",
            "description": "Which kind of short term accommodation to accept."
          },
          "locationClassification": {
            "title": "Retail location class",
            "type": "string",
            "description": "Which retail location class to accept, for stores. The provider documents a, b and shoppingcentre."
          },
          "fullText": {
            "title": "Full text search",
            "type": "string",
            "description": "Free text matched across the whole listing, its description and its attributes. Several terms are combined as alternatives rather than as requirements, so more terms widen the search rather than narrowing it."
          },
          "publishedAfter": {
            "title": "Mark listings published after",
            "type": "string",
            "description": "A date and time such as 2026-06-01T00:00:00. This does not filter anything: it adds a flag to each listing saying whether it was published after that moment. Use the first activation field below to actually filter."
          },
          "firstActivation": {
            "title": "Only listings first published after",
            "type": "string",
            "description": "A date and time such as 2026-06-01T00:00:00. This one does filter: only listings first published after that moment come back, which is how you read just what is new since your last run."
          },
          "channel": {
            "title": "Channel",
            "type": "string",
            "description": "Which publication channel to read. The provider's main portal needs a content partner permission on your account; a customer's own homepage needs their username and their three-legged authorisation; a group id reads the listings of everyone in that group."
          },
          "username": {
            "title": "Customer username",
            "type": "string",
            "description": "Whose listings to read, for the homepage channel. Use \"me\" when the access token below belongs to that customer."
          },
          "features": {
            "title": "Response features",
            "type": "array",
            "description": "Extras the provider can add to a search response. Grouping collects listings from the same vendor under the main hit, for office listings. Match count returns how many listings match each individual search criterion.",
            "items": {
              "type": "string",
              "enum": [
                "grouping",
                "matchcount"
              ],
              "enumTitles": [
                "Group listings from the same vendor",
                "Return a count per search criterion"
              ]
            }
          },
          "sorting": {
            "title": "Sort by",
            "type": "string",
            "description": "Which field to sort listings by, as the provider names it. Apartments and houses accept price, livingspace and rooms; apartments to rent also accept budgetrent; auctions accept marketvalue. Prefix with a minus for descending, for example -price. Left blank, the provider sorts by placement and then by activation date."
          },
          "pageSize": {
            "title": "Listings per page",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many listings the provider returns per page. It accepts 1 to 200 and uses 20 when this is left blank. A larger page means fewer requests for the same results."
          },
          "purchasePrice": {
            "title": "Purchase price",
            "minimum": 0,
            "type": "number",
            "description": "The purchase price of the project, for the mortgage rates service."
          },
          "ownFunds": {
            "title": "Own funds",
            "minimum": 0,
            "type": "number",
            "description": "How much the buyer puts in themselves, for the mortgage rates service."
          },
          "amortizationRate": {
            "title": "Amortisation rate",
            "minimum": 0,
            "type": "number",
            "description": "The repayment rate to price against, for the mortgage rates service."
          },
          "fixedNominalInterestRate": {
            "title": "Fixed interest period",
            "enum": [
              "FIVE_YEARS",
              "TEN_YEARS",
              "FIFTEEN_YEARS",
              "TWENTY_YEARS"
            ],
            "type": "string",
            "description": "How long the nominal interest rate is fixed for, for the mortgage rates service."
          },
          "employment": {
            "title": "Employment",
            "enum": [
              "CIVIL_SERVANT",
              "EMPLOYED",
              "FREELANCER",
              "PENSIONER",
              "SELFEMPLOYED",
              "UNEMPLOYED"
            ],
            "type": "string",
            "description": "The buyer's employment situation, for the mortgage rates service. Lenders price these differently, so it changes the average."
          },
          "providerType": {
            "title": "Lender kind",
            "enum": [
              "ALL",
              "BANK",
              "AGENT"
            ],
            "type": "string",
            "description": "Which kind of lender to average over, for the mortgage rates service."
          },
          "financingGeoCode": {
            "title": "Region for mortgage rates",
            "type": "string",
            "description": "Which region to average the rates over, as a region code. The provider uses 1276, all of Germany, when this is left blank."
          },
          "extraParameters": {
            "title": "Extra query parameters",
            "type": "object",
            "description": "Any other parameter the provider documents for the selected service that this actor does not have its own field for. Given as a JSON object, for example {\"apisearchfield1\": \"run7\"}. Nothing here is invented: it is passed to the provider exactly as written, so check the name against the provider's own documentation first."
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop after this many rows. A region search can run to thousands of listings across many pages, so this is what bounds a run.",
            "default": 500
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Pacing ceiling. The provider's standard limit is 2000 requests per minute per key and it refills continuously, so the default here leaves plenty of room for anything else using the same key.",
            "default": 120
          },
          "consumerKey": {
            "title": "Consumer key",
            "type": "string",
            "description": "Your own consumer key from your provider account. This actor is bring-your-own-key and never ships credentials of its own."
          },
          "consumerSecret": {
            "title": "Consumer secret",
            "type": "string",
            "description": "Your own consumer secret, which signs every request. Leave both this and the consumer key blank to use the DATA_API_KEY environment secret instead, written as consumer key and consumer secret separated by a colon, with the access token and its secret appended in the same way when you have them."
          },
          "accessToken": {
            "title": "Access token",
            "type": "string",
            "description": "Optional. Only needed to reach one customer's own data, such as their listings on their own homepage channel. The search, the place services, the region statistics and the mortgage rates all work without it."
          },
          "accessTokenSecret": {
            "title": "Access token secret",
            "type": "string",
            "description": "Optional, and required whenever the access token is set. It is the second half of the signing key for a three-legged call."
          },
          "baseUrl": {
            "title": "API base URL",
            "type": "string",
            "description": "Override the host the actor calls. Set this to the provider's sandbox host to test against it."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}