{"record":{"id":"57676bc84befb682","repo":"OpenBB-finance/OpenBB","slug":"no-data-was-returned-from-fmp-query","errorCode":null,"errorMessage":"No data was returned from FMP query.","messagePattern":"No data was returned from FMP query\\.","errorType":"exception","errorClass":"EmptyDataError","httpStatus":null,"severity":"warning","filePath":"openbb_platform/providers/fmp/openbb_fmp/models/world_news.py","lineNumber":107,"sourceCode":"        else:\n            base_url = f\"{base_url}news/{query.topic.replace('_', '-')}-latest?\"\n            url = (\n                base_url\n                + f\"from={query.start_date}&to={query.end_date}\"\n                + f\"&limit={query.limit if query.limit else 250}&page={query.page if query.page else 0}&apikey={api_key}\"\n            )\n\n        results: list = await get_data_many(url, **kwargs)\n\n        return sorted(results, key=lambda x: x[\"publishedDate\"], reverse=True)\n\n    @staticmethod\n    def transform_data(\n        query: FMPWorldNewsQueryParams, data: list, **kwargs: Any\n    ) -> list[FMPWorldNewsData]:\n        \"\"\"Return the transformed data.\"\"\"\n        if not data:\n            raise EmptyDataError(\"No data was returned from FMP query.\")\n        return [FMPWorldNewsData.model_validate(d) for d in data]\n","sourceCodeStart":89,"sourceCodeEnd":109,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/providers/fmp/openbb_fmp/models/world_news.py#L89-L109","documentation":"Raised by FMPWorldNewsFetch.transform_data when get_data_many returned an empty list for the FMP stock-news endpoint. The fetcher already sorted successfully, so the HTTP call itself worked; FMP simply had zero articles matching the query parameters.","triggerScenarios":"Calling the FMP world/stock news endpoint with a symbols filter that has no recent articles, a page number beyond available results, or a date window outside FMP's coverage (FMP news history is shallow, typically only recent weeks/months).","commonSituations":"Paginating past the last page, filtering by a sparsely-covered ticker, or requesting older dates than FMP retains for news; free-tier keys receive fewer articles per day.","solutions":["Drop the page parameter or reset it to 0","Widen or remove the date filters - FMP news coverage is recent-only","Remove the symbols filter to get general world news and confirm data flows at all","Use another news provider (benzinga, biztoc, fmp, tiingo) via the news router"],"exampleFix":"# before\nnews = await obb.news.world(provider='fmp', page=5).await_to_list()\n\n# after\nnews = await obb.news.world(provider='fmp', page=0, limit=250).await_to_list()","handlingStrategy":"validation","validationCode":"# FMP news history is shallow - clamp the requested window and page\nfrom datetime import datetime, timedelta\nnewest = datetime.utcnow() - timedelta(days=1)\noldest = datetime.utcnow() - timedelta(days=30)\nassert start_date >= oldest.date() and end_date <= newest.date() and page == 0","typeGuard":null,"tryCatchPattern":"from openbb_core.provider.utils.errors import EmptyDataError\ntry:\n    news = await obb.news.world(provider='fmp', page=page).await_to_list()\nexcept EmptyDataError:\n    news = []  # page beyond results - stop paginating","preventionTips":["Stop paginating as soon as one page returns EmptyDataError instead of probing further pages","Keep date windows inside FMP's recent-news coverage","Prefer providers with deeper news archives for historical analysis"],"tags":["fmp","news","empty-data","pagination"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}