{
  "openapi": "3.0.1",
  "info": {
    "title": "Economic Calendar Tracker — ForexFactory, No Login",
    "description": "ForexFactory economic calendar API with surprise scores, crypto relevance, hawkish/dovish signals. FOMC, CPI, NFP, GDP, PMI, ECB/BOJ/BOE. Custom date range, webhook, Telegram alerts. No API key.",
    "version": "1.9",
    "x-build-id": "E00iyAVTRc9A8j67G"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/gochujang~economic-calendar-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-gochujang-economic-calendar-tracker",
        "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/gochujang~economic-calendar-tracker/runs": {
      "post": {
        "operationId": "runs-sync-gochujang-economic-calendar-tracker",
        "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/gochujang~economic-calendar-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-gochujang-economic-calendar-tracker",
        "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": {
          "source": {
            "title": "Data Source",
            "enum": [
              "forexfactory",
              "fxstreet",
              "both"
            ],
            "type": "string",
            "description": "Economic calendar data source. forexfactory: ForexFactory JSON feed (G10 currencies, fast). fxstreet: FXStreet calendar (broader country coverage, actual values, categories). both: merge both sources for maximum coverage.",
            "default": "forexfactory"
          },
          "dateRange": {
            "title": "Date range preset",
            "enum": [
              "",
              "this_week",
              "next_week",
              "two_weeks",
              "last_week",
              "last_month",
              "last_3_months",
              "last_6_months",
              "today",
              "this_month"
            ],
            "type": "string",
            "description": "Convenience preset that automatically sets the date window. Overrides includeNextWeek/previousWeeks defaults. Explicit dateFrom/dateTo still take precedence for exact filtering.",
            "default": ""
          },
          "includeNextWeek": {
            "title": "Include next week",
            "type": "boolean",
            "description": "Also pull next week's events. Default = this week only.",
            "default": false
          },
          "previousWeeks": {
            "title": "Previous weeks of history",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Number of past weeks to include (0 = current week only, 1 = last week too, up to 8). Useful for back-testing or surprise analysis.",
            "default": 0
          },
          "highImpactOnly": {
            "title": "High impact only",
            "type": "boolean",
            "description": "Shortcut: only return HIGH impact events (overrides impactLevels).",
            "default": false
          },
          "excludeHolidays": {
            "title": "Exclude holidays",
            "type": "boolean",
            "description": "Remove holiday/bank-holiday events from output.",
            "default": false
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Currency or country codes to filter by. Empty = all countries.\n\nSupported FF currency codes: USD, EUR, GBP, JPY, CAD, AUD, NZD, CHF, CNY.\n\nISO-2 aliases also accepted (auto-mapped): US→USD, GB/UK→GBP, JP→JPY, CA→CAD, AU→AUD, NZ→NZD, CH→CHF, CN→CNY. Eurozone members (DE, FR, IT, ES, NL, BE, AT, FI, IE, GR, PT) all map to EUR.\n\nG20 countries not yet in the FF feed (KR, IN, BR, MX, RU, SA, ZA, AR, TR, ID) return no events — use the titleSearch field for event keywords instead.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "impactLevels": {
            "title": "Impact filter",
            "type": "array",
            "description": "Only include events of these impact levels: low/medium/high/holiday. Empty = all. Ignored if highImpactOnly is true.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "importance": {
            "title": "Importance filter (alias for impactLevels)",
            "type": "array",
            "description": "Alias for impactLevels — filter by importance level: low, medium, high. E.g. [\"high\"] for FOMC/CPI/NFP only. Takes effect when impactLevels is not set.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minCryptoRelevance": {
            "title": "Min crypto relevance (0–10)",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Only return events with crypto relevance score ≥ this value. 0 = all events. 7 = FOMC, CPI, NFP, PCE, ETF-related only. 9 = FOMC/Fed rate decisions only.",
            "default": 0
          },
          "eventCategories": {
            "title": "Event categories",
            "type": "array",
            "description": "Filter by event category. Empty = all categories. Options: monetary_policy, inflation, employment, growth, trade, sentiment, retail, housing, energy, credit, other.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "forecastDirection": {
            "title": "Forecast direction vs previous",
            "enum": [
              "",
              "higher",
              "lower",
              "unchanged"
            ],
            "type": "string",
            "description": "Filter events where the consensus forecast is higher or lower than the previous release. Useful for spotting hawkish/dovish signals before events.",
            "default": ""
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "date_asc",
              "date_desc",
              "impact_desc",
              "crypto_relevance_desc",
              "forecast_change_desc"
            ],
            "type": "string",
            "description": "Output row order.",
            "default": "date_asc"
          },
          "titleSearch": {
            "title": "Event keyword search",
            "type": "string",
            "description": "Filter events whose title contains this keyword (case-insensitive). Examples: 'CPI', 'NFP', 'GDP', 'FOMC', 'rate decision'.",
            "default": ""
          },
          "limit": {
            "title": "Max events",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Max events to return.",
            "default": 200
          },
          "alertOnImpacts": {
            "title": "Telegram alert impacts",
            "type": "array",
            "description": "Send Telegram alert for events matching these impact levels (e.g. ['high']). Empty = disabled.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "telegramBotToken": {
            "title": "Telegram Bot Token",
            "type": "string",
            "description": "Telegram bot token for alerts."
          },
          "telegramChatId": {
            "title": "Telegram Chat ID",
            "type": "string",
            "description": "Chat ID for Telegram alerts.",
            "default": ""
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "POST matching events as JSON to this URL (works with Zapier, Make, n8n, Slack incoming webhooks, or any HTTP endpoint). Payload: {source, fetched_at, event_count, events[]}.",
            "default": ""
          },
          "dateFrom": {
            "title": "Date from (ISO)",
            "type": "string",
            "description": "Only include events on or after this date/time (ISO 8601, e.g. '2025-01-01' or '2025-01-01T00:00:00Z'). Combine with previousWeeks to query historical ranges.",
            "default": ""
          },
          "dateTo": {
            "title": "Date to (ISO)",
            "type": "string",
            "description": "Only include events on or before this date/time (ISO 8601, e.g. '2025-01-31'). Useful for querying a specific week or month.",
            "default": ""
          },
          "timezone": {
            "title": "Local timezone",
            "type": "string",
            "description": "Optional IANA timezone name (e.g. 'America/New_York', 'Europe/London', 'Asia/Seoul'). When set, each event row will include a 'date_local' field with the event time in your local timezone.",
            "default": ""
          },
          "showReleasedOnly": {
            "title": "Released events only",
            "type": "boolean",
            "description": "Only return events that have already been released (actual value available). Useful for post-event analysis, surprise scoring, and back-testing. Takes priority over showPendingOnly.",
            "default": false
          },
          "showPendingOnly": {
            "title": "Pending/upcoming events only",
            "type": "boolean",
            "description": "Only return events that have NOT been released yet (no actual value). Useful for pre-event scanning and alert workflows. Ignored if showReleasedOnly is true.",
            "default": false
          },
          "upcomingOnly": {
            "title": "Upcoming only (alias for showPendingOnly)",
            "type": "boolean",
            "description": "Alias for showPendingOnly. Only return events that have not yet been released. Ignored if showReleasedOnly is true.",
            "default": false
          },
          "minImpact": {
            "title": "Minimum impact level",
            "enum": [
              "",
              "low",
              "medium",
              "high"
            ],
            "type": "string",
            "description": "Only include events at or above this impact level. 'medium' returns medium + high; 'high' returns high only. Ignored if impactLevels or highImpactOnly are set.",
            "default": ""
          },
          "countryGroup": {
            "title": "Country group shortcut",
            "enum": [
              "",
              "G7",
              "G10",
              "G20",
              "BRICS",
              "ASEAN",
              "ANGLO",
              "MAJOR"
            ],
            "type": "string",
            "description": "Pre-select a group of countries to filter by. Only countries tracked by Forex Factory are returned (BRICS/ASEAN members not covered by FF feed will return no events). Individual 'countries' entries are added on top.",
            "default": ""
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}