{
  "openapi": "3.0.1",
  "info": {
    "title": "Travel Budget Itinerary Builder",
    "description": "Plan a trip around a destination or budget. Compare current flights and stays, discover local places, read traveler reviews, and see linked meal and transport prices. Prices found on opened pages include source links; estimates and unverified results are labeled.",
    "version": "0.0",
    "x-build-id": "Efw6zm3RNIZJRPib7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rustic_soybean~travel-budget-itinerary-builder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rustic_soybean-travel-budget-itinerary-builder",
        "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/rustic_soybean~travel-budget-itinerary-builder/runs": {
      "post": {
        "operationId": "runs-sync-rustic_soybean-travel-budget-itinerary-builder",
        "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/rustic_soybean~travel-budget-itinerary-builder/run-sync": {
      "post": {
        "operationId": "run-sync-rustic_soybean-travel-budget-itinerary-builder",
        "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",
        "required": [
          "mode",
          "travelStyle",
          "currency"
        ],
        "properties": {
          "mode": {
            "title": "How should we plan your trip?",
            "enum": [
              "cheapest_destinations",
              "specific_destination",
              "budget"
            ],
            "type": "string",
            "description": "Choose destinations with the lowest current airfare, plan a trip to a named destination, or keep a trip within your total budget.",
            "default": "specific_destination"
          },
          "departureCity": {
            "title": "Departure city",
            "maxLength": 100,
            "type": "string",
            "description": "For the cheapest-destination search, enter a major city supported by Google Flights Deals, such as New York, Los Angeles, London, or Tokyo."
          },
          "origin": {
            "title": "Departure airport or city code",
            "maxLength": 10,
            "type": "string",
            "description": "Use an airport or metro code such as PHL, JFK, NYC, or LON. Required when airfare is included in a specific-destination or budget search."
          },
          "destination": {
            "title": "Destination city",
            "maxLength": 100,
            "type": "string",
            "description": "Enter the destination city in plain English, such as Paris. Used for hotel and local-place searches."
          },
          "destinationCode": {
            "title": "Destination airport or metro code",
            "maxLength": 10,
            "type": "string",
            "description": "Required only when airfare is included for a fixed destination. Use a code such as PAR, CDG, or LHR."
          },
          "country": {
            "title": "Optional destination country",
            "maxLength": 80,
            "type": "string",
            "description": "Optional country filter for broad flight-deal searches, for example Italy. For a named destination, enter its country here to localize local-cost web searches; if blank or unrecognized, those searches use US Google results."
          },
          "travelYear": {
            "title": "Travel year for flexible flight deals",
            "minimum": 2026,
            "maximum": 2100,
            "type": "integer",
            "description": "Optional for cheapest-destination and budget searches without fixed dates. The deal source often omits the year; enter a year to match its month/day and search lodging for those dates without guessing."
          },
          "departureDate": {
            "title": "Departure date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Required for a specific destination or a budget search with a destination. Use YYYY-MM-DD. Flexible deal searches use current discounted dates instead."
          },
          "returnDate": {
            "title": "Return date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Required for a specific destination or a budget search with a destination. Use YYYY-MM-DD and make it later than the departure date."
          },
          "adults": {
            "title": "Number of adults",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Number of adults traveling. Enter a value from 1 to 8.",
            "default": 1
          },
          "children": {
            "title": "Number of children",
            "minimum": 0,
            "maximum": 6,
            "type": "integer",
            "description": "Number of children traveling. Enter 0 if no children are traveling.",
            "default": 0
          },
          "travelStyle": {
            "title": "What matters most?",
            "enum": [
              "cheapest",
              "best_value",
              "high_end"
            ],
            "type": "string",
            "description": "Cheapest sorts by known trip costs or airfare when a full subtotal is unavailable. Best value balances observed lodging ratings and known costs. High-end puts highly rated stays first. Ratings are not professional reviews.",
            "default": "best_value"
          },
          "budget": {
            "title": "Total trip budget",
            "minimum": 1,
            "maximum": 1000000,
            "type": "number",
            "description": "Total budget for everyone, in the selected currency. The Actor compares it with known costs; missing prices and fees may make the final trip cost higher."
          },
          "currency": {
            "title": "Currency",
            "pattern": "^[A-Z]{3}$",
            "type": "string",
            "description": "Three-letter currency code, such as USD, CAD, GBP, or EUR.",
            "default": "USD"
          },
          "include": {
            "title": "Include these trip costs",
            "type": "array",
            "description": "Turn off categories you want to leave out of the comparison. The Actor only searches categories you include.",
            "items": {
              "type": "string",
              "enum": [
                "airfare",
                "lodging",
                "meals",
                "ground_transport",
                "local_places"
              ],
              "enumTitles": [
                "Airfare",
                "Lodging",
                "Meals",
                "Ground transport",
                "Local places and traveler reviews"
              ]
            },
            "default": [
              "airfare",
              "lodging",
              "meals",
              "local_places"
            ]
          },
          "mealBudgetPerPersonPerDay": {
            "title": "Meal budget per person per day",
            "minimum": 0,
            "maximum": 10000,
            "type": "number",
            "description": "Optional planning estimate in your selected currency. This is your estimate, not a live restaurant quote. Leave blank to keep meals out of the subtotal; the Actor will still search for linked meal-price evidence when Meals is selected."
          },
          "groundTransportBudget": {
            "title": "Ground transport allowance for the whole trip",
            "minimum": 0,
            "maximum": 100000,
            "type": "number",
            "description": "Optional total estimate in your selected currency. This is your estimate, not a live transit or rental-car quote."
          },
          "tripDays": {
            "title": "Trip length in days",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Used for meal estimates and day-by-day place suggestions. Leave blank to calculate from fixed dates, or use five days for flexible deal searches."
          },
          "interests": {
            "title": "What do you like doing?",
            "maxItems": 4,
            "type": "array",
            "description": "Optional search terms such as museums, hiking, live music, food markets, or beaches. The Actor checks up to two interests (one when restaurant search is included) to keep costs low.",
            "items": {
              "type": "string",
              "minLength": 2,
              "maxLength": 60
            },
            "default": []
          },
          "maxOptions": {
            "title": "Number of trip options to return",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Maximum number of itinerary options to include in the results.",
            "default": 5
          },
          "maxSourceSpendUsd": {
            "title": "Maximum spend on pay-per-event sources (USD)",
            "minimum": 0.05,
            "maximum": 2,
            "type": "number",
            "description": "Maximum combined allowance for capped pay-per-event sources, divided among flights or lodging, local places, reviews, local cost searches, and opening up to four local source pages. Default $0.15. The separate flight-deal source is billed by its author as compute usage, so this cap does not cover it; its result count is limited.",
            "default": 0.15
          },
          "enablePriceTrends": {
            "title": "Check flexible-date price trends (extra cost)",
            "type": "boolean",
            "description": "Off by default to save money. When enabled for a specific route, requests a 30-day Google Flights price graph and starts a browser in the source Actor.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}