{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Portugal AL License Checker",
    "description": "Check the AL licence number of Airbnb and Booking.com listings in Portugal against the national register (RNAL): verdict, registered holder with tax number, e-mail and phone, address with floor, authorised guests, insurance — or list every AL of a municipality.",
    "version": "0.0",
    "x-build-id": "XsFffQtSgeWLap9zt"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nice_dev~airbnb-portugal-license-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nice_dev-airbnb-portugal-license-checker",
        "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/nice_dev~airbnb-portugal-license-checker/runs": {
      "post": {
        "operationId": "runs-sync-nice_dev-airbnb-portugal-license-checker",
        "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/nice_dev~airbnb-portugal-license-checker/run-sync": {
      "post": {
        "operationId": "run-sync-nice_dev-airbnb-portugal-license-checker",
        "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": {
          "sources": {
            "title": "Platforms",
            "type": "array",
            "description": "Where the places are searched: Airbnb, Booking.com, or both (map areas: Airbnb only). Booking shows the AL number on nearly every holiday flat and says when a host claims not to need one. Listing URLs and IDs are read on their own platform whatever this says.",
            "items": {
              "type": "string",
              "enum": [
                "airbnb",
                "booking"
              ],
              "enumTitles": [
                "Airbnb",
                "Booking.com"
              ]
            },
            "default": [
              "airbnb"
            ]
          },
          "startUrls": {
            "title": "Airbnb URLs",
            "maxItems": 1000,
            "type": "array",
            "description": "Airbnb listing URLs (`https://www.airbnb.com/rooms/12345`, any Airbnb domain such as airbnb.pt) and/or Airbnb search URLs (`https://www.airbnb.com/s/Lisbon--Portugal/homes`, map searches included: their filters are kept, pagination and map splitting are automatic). Max 1 000 URLs.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingIds": {
            "title": "Airbnb listing IDs",
            "maxItems": 1000,
            "uniqueItems": true,
            "type": "array",
            "description": "Airbnb listing IDs alone (the digits after `/rooms/`), one per line — checked in this order, before any search: with a result limit, the first ones are the ones saved. Max 1 000.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "bookingUrls": {
            "title": "Booking.com property URLs",
            "maxItems": 1000,
            "uniqueItems": true,
            "type": "array",
            "description": "Booking.com property pages (`https://www.booking.com/hotel/pt/alfama-sunny-flat.html`), one per line — checked in this order, before any search. Max 1 000.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Place",
            "maxLength": 200,
            "type": "string",
            "description": "A place in Portugal, as typed in the platforms' search box (e.g. `Lisbon, Portugal`, `Porto`, `Albufeira`, `Funchal`). Searched on each platform of **Platforms**; each listing found is opened and its AL licence checked in the national register (RNAL)."
          },
          "locations": {
            "title": "More places",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Several places in one run (one search each, max 100). Added to **Place**; a listing found by several searches is saved once.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "boundingBoxes": {
            "title": "Map areas",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Map rectangles to search, one per line as `south latitude, west longitude, north latitude, east longitude` (e.g. `38.70, -9.16, 38.73, -9.12` for central Lisbon), on Airbnb only. The surest way to cover a whole city: Airbnb returns at most 270 listings per search, and a full area is split into smaller ones automatically.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "licenseNumbers": {
            "title": "Licence numbers to check",
            "maxItems": 1000,
            "uniqueItems": true,
            "type": "array",
            "description": "AL licence numbers (RNAL) checked in the register without any Airbnb listing (e.g. `42391/AL`, `AL 57277`, `12833`). One result per licence (two spellings of one number are checked once). Several numbers in one entry (separated by commas, semicolons or line breaks) count one each. Max 1 000 numbers.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "municipalities": {
            "title": "Register lists: municipalities",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Every local accommodation (AL) registered in these mainland municipalities (concelhos), listed from Turismo de Portugal's open data and read in the register one by one — holder, contacts, address — without any Airbnb search (e.g. `Lisboa`, `Porto`, `Albufeira`, `Cascais`). Newest registrations first. Mainland only: the open data has no Madeira or Azores. Max 100.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "districts": {
            "title": "Register lists: districts",
            "type": "array",
            "description": "Every local accommodation registered in these mainland districts (Faro = the Algarve), as for **Register lists: municipalities**. Newest registrations first.",
            "items": {
              "type": "string",
              "enum": [
                "Aveiro",
                "Beja",
                "Braga",
                "Bragança",
                "Castelo Branco",
                "Coimbra",
                "Évora",
                "Faro",
                "Guarda",
                "Leiria",
                "Lisboa",
                "Portalegre",
                "Porto",
                "Santarém",
                "Setúbal",
                "Viana do Castelo",
                "Vila Real",
                "Viseu"
              ],
              "enumTitles": [
                "Aveiro",
                "Beja",
                "Braga",
                "Bragança",
                "Castelo Branco",
                "Coimbra",
                "Évora",
                "Faro (Algarve)",
                "Guarda",
                "Leiria",
                "Lisboa",
                "Portalegre",
                "Porto",
                "Santarém",
                "Setúbal",
                "Viana do Castelo",
                "Vila Real",
                "Viseu"
              ]
            },
            "default": []
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of results (listings checked + licence numbers + register records) to save for the whole run, after filters. 0 = no limit.",
            "default": 100
          },
          "maxItemsPerQuery": {
            "title": "Max listings per search",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Cap for EACH search (place, map area or search URL) and each register list (municipality or district), so that the first one cannot use up the whole **Max results** budget. 0 = no per-search cap.",
            "default": 0
          },
          "splitMap": {
            "title": "Split full areas",
            "type": "boolean",
            "description": "Airbnb shows at most 270 listings (15 pages) per search. When a search is full, cut its map area into 4 smaller areas, again and again, to reach the listings beyond 270. Off = the first 270 of each search only.",
            "default": true
          },
          "cardsOnly": {
            "title": "Cards only (fast)",
            "type": "boolean",
            "description": "Deliver the card of each Airbnb search result - link, title, type of place, price, rating, position, bedrooms - without opening the listing: faster and cheaper, but no licence number, no verdict, nothing from the register. Charged per card (see Pricing), nothing else is charged in this mode. Needs a place, a map area or an Airbnb search URL. Not compatible with the options that read the listing (host profile, risk score, comparables, AI labels), with Airbnb listing URLs and IDs, Booking.com, licence numbers and register lists (municipalities, districts), nor with the filters on verdicts, regions, registered holder and holder phone.",
            "default": false
          },
          "checkIn": {
            "title": "Check-in date",
            "type": "string",
            "description": "Travel dates of the search (`2027-07-12`). Airbnb then shows the listings free on those dates and their price for the stay; empty = Airbnb's own flexible dates. Today or later (the day in Portugal): Airbnb shows nothing for a stay that has begun."
          },
          "checkOut": {
            "title": "Check-out date",
            "type": "string",
            "description": "End of the stay (`2027-07-15`), after the check-in date."
          },
          "adults": {
            "title": "Guests",
            "minimum": 0,
            "maximum": 16,
            "type": "integer",
            "description": "Number of guests: only the listings that can host them. 0 = any.",
            "default": 0
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "maximum": 15,
            "type": "integer",
            "description": "Children aged 2-12 travelling (Airbnb filter). 0 = none.",
            "default": 0
          },
          "infants": {
            "title": "Infants",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Infants under 2 travelling (Airbnb filter). 0 = none.",
            "default": 0
          },
          "pets": {
            "title": "Pets",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Pets travelling: only listings that allow pets. 0 = none.",
            "default": 0
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "EUR",
              "USD",
              "GBP"
            ],
            "type": "string",
            "description": "Currency of the prices shown on the search results.",
            "default": "EUR"
          },
          "priceMin": {
            "title": "Min price per night",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Lowest price per night, in the currency above. 0 = no minimum.",
            "default": 0
          },
          "priceMax": {
            "title": "Max price per night",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Highest price per night, in the currency above. 0 = no maximum.",
            "default": 0
          },
          "roomTypes": {
            "title": "Type of place",
            "type": "array",
            "description": "Only these kinds of place. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "entire_home",
                "private_room",
                "shared_room",
                "hotel_room"
              ],
              "enumTitles": [
                "Entire home",
                "Private room",
                "Shared room",
                "Hotel room"
              ]
            },
            "default": []
          },
          "propertyTypes": {
            "title": "Property type",
            "type": "array",
            "description": "Only these kinds of property (Airbnb filter). Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "apartment",
                "guesthouse",
                "hotel"
              ],
              "enumTitles": [
                "House",
                "Apartment",
                "Guesthouse",
                "Hotel"
              ]
            },
            "default": []
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Only listings with at least this many bedrooms. 0 = any.",
            "default": 0
          },
          "minBeds": {
            "title": "Min beds",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Only listings with at least this many beds. 0 = any.",
            "default": 0
          },
          "minBathrooms": {
            "title": "Min bathrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Only listings with at least this many bathrooms. 0 = any.",
            "default": 0
          },
          "superhostOnly": {
            "title": "Superhosts only",
            "type": "boolean",
            "description": "Only listings of Superhosts (Airbnb filter).",
            "default": false
          },
          "bookingPropertyTypes": {
            "title": "Booking.com property types",
            "type": "array",
            "description": "Booking.com searches: which kinds of property to list (hotels register elsewhere, not in the AL register). Empty = both.",
            "items": {
              "type": "string",
              "enum": [
                "apartment",
                "holiday_home"
              ],
              "enumTitles": [
                "Apartments",
                "Holiday homes"
              ]
            },
            "default": [
              "apartment",
              "holiday_home"
            ]
          },
          "registeredAfter": {
            "title": "Registered on or after",
            "type": "string",
            "description": "Only accommodations registered on this date or later (`2026-01-01`): the new operators of the area. Empty = all."
          },
          "modalities": {
            "title": "Kind of accommodation",
            "type": "array",
            "description": "Only these kinds of accommodation, as registered. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "apartment",
                "house",
                "rooms",
                "guesthouse",
                "hostel"
              ],
              "enumTitles": [
                "Apartment (Apartamento)",
                "House (Moradia)",
                "Rooms (Quartos)",
                "Guesthouse (Estabelecimento de hospedagem)",
                "Hostel"
              ]
            },
            "default": []
          },
          "onlyVerdicts": {
            "title": "Keep only these verdicts",
            "type": "array",
            "description": "Save only the listings whose verdict is one of these — e.g. `never_issued`, `not_in_register`, `other_property`, `over_capacity`, `unknown_format` and `no_number` to get the suspicious listings only (the verdicts marked isSuspicious). Empty = every listing.",
            "items": {
              "type": "string",
              "enum": [
                "valid",
                "never_issued",
                "not_in_register",
                "other_property",
                "over_capacity",
                "unknown_format",
                "no_number",
                "exempt_claimed",
                "other_register",
                "region_not_covered",
                "register_unavailable"
              ],
              "enumTitles": [
                "Valid",
                "Never issued",
                "Not in the register",
                "Another property's number",
                "More guests than allowed",
                "Unreadable number",
                "No number shown",
                "Says it is exempt",
                "Hotel register (RNET)",
                "Outside the RNAL (Azores, abroad)",
                "Register unavailable"
              ]
            },
            "default": []
          },
          "regions": {
            "title": "Regions",
            "type": "array",
            "description": "Only listings located in these regions (a licence number or register record: the region of its registered address). Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "mainland",
                "madeira",
                "azores",
                "other"
              ],
              "enumTitles": [
                "Mainland Portugal",
                "Madeira",
                "Azores",
                "Outside Portugal"
              ]
            },
            "default": []
          },
          "holderType": {
            "title": "Registered holder",
            "enum": [
              "any",
              "person",
              "company"
            ],
            "type": "string",
            "description": "Only results whose registered holder is a private person (tax number starting 1, 2 or 3) or a company (5, 6, 9…), as the register gives it.",
            "default": "any"
          },
          "onlyWithPhone": {
            "title": "Holder phone only",
            "type": "boolean",
            "description": "Only results whose registered holder has a phone number in the register (about 1 holder in 3; every holder has an e-mail).",
            "default": false
          },
          "hostType": {
            "title": "Host type",
            "enum": [
              "any",
              "business",
              "individual"
            ],
            "type": "string",
            "description": "Only listings of business hosts (companies and professionals, who must show their business details) or of individual hosts, as Airbnb labels them on the search results (on the listing page for listing URLs and IDs).",
            "default": "any"
          },
          "minRating": {
            "title": "Min rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Only listings rated at least this much out of 5 (listings without a rating are dropped). Airbnb listings only (Booking.com properties are not filtered by this). 0 = any.",
            "default": 0
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Drop the listings whose title contains one of these words (case and accents ignored).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "gpsToleranceKm": {
            "title": "Distance tolerance",
            "minimum": 0.5,
            "maximum": 50,
            "type": "number",
            "description": "Airbnb blurs a listing's position by a few hundred metres. A registered property farther than this from the listing gives the verdict `other_property` (position from Turismo de Portugal's open data: mainland only; in Madeira only the island is compared).",
            "default": 1.5
          },
          "includeHostProfile": {
            "title": "Host's listing count",
            "type": "boolean",
            "description": "Open the host's public profile (1 extra request per host, not per listing) for the number of listings they manage and their IDs. Charged per host profile (see Pricing).",
            "default": false
          },
          "includeRiskScore": {
            "title": "Risk score (0-100)",
            "type": "boolean",
            "description": "Give each Airbnb listing and Booking.com property a risk score from 0 to 100 and the short codes of the rules behind it: the verdict first, then a number shown by several listings, a registered address far from the listing, a type of home that differs from the register's, a liability insurance ended or missing, and a host who manages several listings (needs **Host's listing count**). A rule whose data is not read is skipped and named, never counted as a risk. No extra request. Charged per listing whose row carries a score (see Pricing); a row whose register could not be read gets none and is not charged for it.",
            "default": false
          },
          "includeAiLabels": {
            "title": "AI labels (needs 2 GB of memory)",
            "type": "boolean",
            "description": "Label each Airbnb listing's description with four yes / no AI labels and their scores: managed by a company or a property manager, self check-in with a lockbox or a keypad, monthly or long stays (28 nights or more), mentions a licence or a permit. English descriptions only: a description in another language (Portuguese, Spanish, French…), a Booking.com property and a listing without a description get none and are not charged. The labels are read in the text of the description, they are indications, not facts. Needs 2 GB of memory (Run options → Memory): with less, the AI labels are skipped, said in the log, and nothing is charged. The descriptions are read one at a time, so a run with this option is slower. Charged per listing whose row carries its labels (see Pricing).",
            "default": false
          },
          "includeComparables": {
            "title": "Comparable listings",
            "type": "boolean",
            "description": "Add, to each Airbnb listing, the Airbnb listings around it: the nearest ones of the same type of place and within one bedroom of it (up to **Max comparables per listing**), each with its price per night, rating, bedrooms and distance, and the median price per night of them. Read from the cards of a search around the listing: no listing page is opened, and one search serves every listing of the same area, type of place and size. An entire home whose bedrooms are unknown gets none. Give **Check-in** and **Check-out** to get prices: without dates the comparables have no price and there is no median. Charged per listing whose row carries comparables (see Pricing).",
            "default": false
          },
          "maxComparablesPerListing": {
            "title": "Max comparables per listing",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Most comparable listings kept for each listing (**Comparable listings**): the nearest ones.",
            "default": 10
          },
          "downloadPhotos": {
            "title": "Download photos",
            "type": "boolean",
            "description": "Download the first photos of each listing into this run's key-value store and give their public links, their SHA-256 and the time of the download: a dated copy of what the listing showed that day. The links in **Photos** (`images`) stay in every run for free. A photo that cannot be had (gone, too big, not an image) is left out and not charged. Charged per photo delivered (see Pricing). Not available with **Cards only (fast)**.",
            "default": false
          },
          "maxPhotosPerListing": {
            "title": "Max photos per listing",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Photos downloaded for each listing (**Download photos**): the first ones of the listing.",
            "default": 5
          },
          "includeBusinessContact": {
            "title": "Business contact (Booking.com)",
            "type": "boolean",
            "description": "Ask Booking.com for the business e-mail and phone it shows for a professional host, on Booking.com properties: `businessEmail` and `businessPhone` of the row. Only professional hosts (traders under EU law) have them: a private host's contact is not given. The e-mail and phone of the professional block Airbnb shows stay in every Airbnb row for free, as before. Charged per Booking.com property whose row carries an e-mail or a phone (see Pricing). Not available with **Cards only (fast)**.",
            "default": false
          },
          "includeProHostContact": {
            "title": "Professional host contact",
            "type": "boolean",
            "description": "Add the business e-mail and phone of professional Airbnb hosts, from publicly available sources, with the page each comes from and a confidence: `proHostEmails`, `proHostPhones`, `proHostContactSourceUrl`, `proHostContactConfidence`. Only as a fallback: a listing whose professional block (Airbnb) or whose register record already gives an e-mail or a phone is not looked up. A host is looked up only when a company name is known (the business name Airbnb gives, or a host or co-host whose name is a company's), never a private person. Charged per listing whose row carries a contact (see Pricing); a listing with none is delivered as it is, not charged. Not available with **Cards only (fast)**.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new listings",
            "type": "boolean",
            "description": "Skip the listings (licence numbers, register records) that a previous run (same **Memory key**) already delivered: they are not saved and not charged, and their page is not even opened. First run = everything is new.",
            "default": false
          },
          "stateKey": {
            "title": "Memory key",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$",
            "maxLength": 64,
            "type": "string",
            "description": "Name of the memory used by **Only new listings**. Give each schedule / task its own key (e.g. `lisbon-weekly`) so that they do not share their memory. Letters, digits, `-` and `_`.",
            "default": "default"
          },
          "resetState": {
            "title": "Reset the memory",
            "type": "boolean",
            "description": "Forget everything remembered under this **Memory key** before the run: this run returns (and charges) every listing again. Untick it afterwards.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy or your own proxies, for the Airbnb pages and the register. Keep the default: it is included in the price. The residential Apify proxy is not available in this Actor.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of Airbnb pages processed in parallel.",
            "default": 8
          },
          "maxRequestsPerMinute": {
            "title": "Max requests per minute",
            "minimum": 10,
            "maximum": 2000,
            "type": "integer",
            "description": "Most requests to Airbnb in any 60 seconds, all of them counted: search pages, listing pages and host profiles. A budget, not an even pace: up to this many can leave at once when the minute starts (spread them with the minimum delay below). Lower it if Airbnb answers HTTP 429 / 403 in the log.",
            "default": 120
          },
          "minRequestIntervalMs": {
            "title": "Min delay between requests",
            "minimum": 0,
            "maximum": 60000,
            "type": "integer",
            "description": "Smallest gap between two requests to Airbnb, in milliseconds. Unlike the per-minute rate, this spreads the requests evenly instead of letting them go out in a burst. 0 = no gap.",
            "default": 0
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Retries per request before it is marked as failed. Behind a proxy, a request Airbnb turns away is also retried on a new proxy session up to 10 times without using up these retries.",
            "default": 5
          },
          "debugLog": {
            "title": "Debug log",
            "type": "boolean",
            "description": "Include debug messages in the run log.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}