{"id":8410,"date":"2025-11-21T08:52:54","date_gmt":"2025-11-21T12:52:54","guid":{"rendered":"https:\/\/www.benzinga.com\/apis\/blog\/\/"},"modified":"2025-11-24T12:26:53","modified_gmt":"2025-11-24T16:26:53","slug":"mastering-the-benzinga-newsfeed-api","status":"publish","type":"post","link":"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/","title":{"rendered":"Mastering the Newsfeed API: Tracking Real-Time Headlines and Price Drivers in Python"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-5-1024x683.png\" alt=\"\" class=\"wp-image-8431\" srcset=\"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-5-1024x683.png 1024w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-5-300x200.png 300w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-5-768x512.png 768w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-5.png 1170w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Markets respond to information faster than anything else, and most of that information begins with a headline. An earnings update, a regulatory note, a product issue, even a short line from an analyst can move a stock before the chart shows any sign of it. Traders and researchers depend on structured news because it gives them a clearer starting point and keeps them from jumping between scattered sources.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Benzinga\u2019s <a href=\"https:\/\/www.benzinga.com\/apis\/cloud-product\/bz-why-is-it-moving\/\"><strong>Newsfeed and Why Is It Moving (WIM)<\/strong><\/a> endpoint is built around that need. It delivers real-time headlines along with symbols, tags, timestamps, and short explanations that point to the reason behind a move. The data comes in a format that fits well into trading systems, lightweight dashboards, or internal research scripts, so you spend less time cleaning news and more time using it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This guide covers the endpoint from top to bottom. We\u2019ll look at how the data is structured, how the parameters shape the response, and how to pull it into Python for different workflows. The plan is simple. Once you finish the article, you should be able to build your own news-based tools without guessing what each field is supposed to represent.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is Benzinga\u2019s Newsfeed and WIM endpoint?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">News plays a specific role in how markets behave. Prices move for many reasons, but the earliest signals usually appear in headlines. A company might release guidance, an analyst may revise a target, or a regulatory body could publish something unexpected. These events shape sentiment before the broader market reacts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Most traders do not read every article that comes out. They look for structure. They care about the symbol, the category, the time, the importance, and a short idea of what happened. If the headline mentions a filing or an earnings update, they want to know that quickly. If a stock is moving without any obvious reason, they want the explanation without digging through multiple sources.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is why structured news feeds matter. Raw headlines alone are not enough. What helps is metadata that groups stories by category, attaches relevant tickers, and adds context about why the event may matter. When these fields are consistent and easy to filter, the news can become part of a trading system instead of something you check manually.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Benzinga\u2019s Newsfeed and WIM endpoint is built around these needs. It does not just deliver text. It provides a clean set of attributes that describe each item. This makes it easier to build alerts, track catalysts, and connect headlines with intraday market activity. The entire point is to reduce guesswork and let the data slot into tools that run throughout the day.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Endpoint Walkthrough<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The Newsfeed and Why Is It Moving service exposes two REST endpoints.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>GET https:\/\/api.benzinga.com\/api\/v2\/news<\/em><\/li>\n\n\n\n<li><em>GET https:\/\/api.benzinga.com\/api\/v2\/news-removed<\/em><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In practice, you use the first one to pull articles and WIM items, and the second one only if you are syncing a local store and need to remove items that were taken down.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Base call and authentication<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Every request needs your API key passed as token in the query string, plus an accept header.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\nimport requests\n\napi_key = &quot;YOUR API KEY&quot;\nurl = &quot;https:\/\/api.benzinga.com\/api\/v2\/news&quot;\n\nheaders = {&quot;accept&quot;: &quot;application\/json&quot;}\nparams = {\n    &quot;token&quot;: api_key,\n    &quot;tickers&quot;: &quot;AAPL&quot;,\n    &quot;pageSize&quot;: 10,\n    &quot;displayOutput&quot;: &quot;full&quot;\n}\n\nr = requests.get(url, params=params, headers=headers)\ndata = r.json()\ndata&#x5B;0]\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">The displayOutput=&#8221;full&#8221; flag is important if you want the full HTML body instead of just a headline or teaser.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Key query parameters<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You do not need every parameter. For most workflows, a small subset is enough.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Field<\/strong><\/td><td><strong>Type \/ Example<\/strong><\/td><td><strong>What it Controls<\/strong><\/td><\/tr><tr><td><strong>token<\/strong><\/td><td>YOUR_API_KEY<\/td><td>Authentication. Required for every request.<\/td><\/tr><tr><td><strong>page<\/strong><\/td><td>0, 1, 2<\/td><td>Page offset for pagination. Default 0.<\/td><\/tr><tr><td><strong>pageSize<\/strong><\/td><td>10, 50<\/td><td>Number of results. Max 100.<\/td><\/tr><tr><td><strong>displayOutput<\/strong><\/td><td>headline, abstract, full<\/td><td>Level of content returned. Use <strong>full<\/strong> for body text.<\/td><\/tr><tr><td><strong>date<\/strong><\/td><td>2025-11-19<\/td><td>Single day shortcut for <strong>dateFrom<\/strong> and <strong>dateTo<\/strong>.<\/td><\/tr><tr><td><strong>dateFrom<\/strong><\/td><td>2025-11-18<\/td><td>Start date for a range query. Sorted by published date.<\/td><\/tr><tr><td><strong>dateTo<\/strong><\/td><td>2025-11-19<\/td><td>End date for a range query.<\/td><\/tr><tr><td><strong>updatedSince<\/strong><\/td><td>Unix timestamp<\/td><td>Delta sync by last update time. Useful for polling.<\/td><\/tr><tr><td><strong>tickers<\/strong><\/td><td>AAPL, AAPL,MSFT,NVDA<\/td><td>Filter by one or more symbols, comma-separated values (csv). Max 50.<\/td><\/tr><tr><td><strong>channels<\/strong><\/td><td>Earnings, WIIM, Equities<\/td><td>Filter by channel names or ids. Set <strong>WIIM<\/strong> to focus on WIM.<\/td><\/tr><tr><td><strong>topics<\/strong><\/td><td>AI, autonomous driving<\/td><td>Keyword search across title, tags, and body.<\/td><\/tr><tr><td><strong>authors<\/strong><\/td><td>Elon Musk Watch, Shanthi Rexaline<\/td><td>Filter by author<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For low latency and production use, it is recommended to use updatedSince as your main filter instead of huge date ranges.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Response fields<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Each item in the JSON array is a single article or headline with a consistent structure.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Field<\/strong><\/td><td><strong>Example Value<\/strong><\/td><td><strong>Meaning<\/strong><\/td><\/tr><tr><td><strong>id<\/strong><\/td><td>48941961<\/td><td>Unique article id. Also appears in the benzinga.com url.<\/td><\/tr><tr><td><strong>author<\/strong><\/td><td>&#8220;Badar Shaikh&#8221;<\/td><td>Name of the journalist or contributor.<\/td><\/tr><tr><td><strong>created<\/strong><\/td><td>&#8220;Wed, 19 Nov 2025 00:49:52 -0400&#8221;<\/td><td>When the article was first created, RFC 2822 format.<\/td><\/tr><tr><td><strong>updated<\/strong><\/td><td>&#8220;Wed, 19 Nov 2025 00:49:52 -0400&#8221;<\/td><td>Last update timestamp. Changes if the story is edited.<\/td><\/tr><tr><td><strong>title<\/strong><\/td><td>&#8220;Elon Musk Says This Is When Tesla&#8230;&#8221;<\/td><td>Plain text headline.<\/td><\/tr><tr><td><strong>teaser<\/strong><\/td><td>Short summary string<\/td><td>First sentence or short context, may contain HTML.<\/td><\/tr><tr><td><strong>body<\/strong><\/td><td>Full HTML article<\/td><td>Complete article content, returned only when <strong>displayOutput=full<\/strong>.<\/td><\/tr><tr><td><strong>url<\/strong><\/td><td>Article url on benzinga.com<\/td><td>Public link to the story.<\/td><\/tr><tr><td><strong>image<\/strong><\/td><td>List of {size, url} objects<\/td><td>Featured image variations like thumb, small, large.<\/td><\/tr><tr><td><strong>channels<\/strong><\/td><td>List of {name} objects<\/td><td>Categories such as Equities, Tech, WIIM, Top Stories.<\/td><\/tr><tr><td><strong>stocks<\/strong><\/td><td>List of {name, isin, exchange} objects<\/td><td>Symbols referenced in the article body.<\/td><\/tr><tr><td><strong>tags<\/strong><\/td><td>List of {name} objects<\/td><td>Extra tags like themes, people, products.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Removed news endpoint<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If you are persisting news locally, you can periodically call:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nGET https:\/\/api.benzinga.com\/api\/v2\/news-removed\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">It returns a simple payload like:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\n{\n  &quot;removed&quot;: &#x5B;\n    {&quot;id&quot;: 12345678},\n    {&quot;id&quot;: 23456789}\n  ]\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">You then delete or flag those IDs in your store.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Use Case 1: Basic Data Extraction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Most workflows begin with simple retrieval. The Newsfeed endpoint supports several filtered pulls that cover common needs. Below are a few straightforward patterns that help you get familiar with the data.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Recent headlines for a single stock<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This is the most direct call. It returns the latest items that reference a given symbol.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\nimport requests\n\napi_key = &quot;YOUR API KEY&quot;\nurl = &quot;https:\/\/api.benzinga.com\/api\/v2\/news&quot;\n\nheaders = {&quot;accept&quot;: &quot;application\/json&quot;}\nparams = {\n    &quot;token&quot;: api_key,\n    &quot;tickers&quot;: &quot;AAPL&quot;,\n    &quot;pageSize&quot;: 10,\n    &quot;displayOutput&quot;: &quot;headline&quot;\n}\n\nr = requests.get(url, params=params, headers=headers)\nitems = r.json()\n\nfor n in items:\n    print(n&#x5B;&quot;id&quot;], n&#x5B;&quot;title&quot;])\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Output:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"191\" src=\"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-2-1024x191.png\" alt=\"\" class=\"wp-image-8414\" srcset=\"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-2-1024x191.png 1024w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-2-300x56.png 300w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-2-768x143.png 768w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-2-1536x286.png 1536w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-2.png 1600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Pulling news for multiple stocks<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You can pass several symbols as a comma-separated list. This is common when tracking a watchlist.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\nheaders = {&quot;accept&quot;: &quot;application\/json&quot;}\n\nparams = {\n    &quot;token&quot;: api_key,\n    &quot;tickers&quot;: &quot;AAPL,NVDA,TSLA&quot;,\n    &quot;pageSize&quot;: 75\n}\n\nr = requests.get(url, params=params, headers=headers)\nitems = r.json()\n\nsymbols = set()\nfor n in items:\n    for s in n.get(&quot;stocks&quot;, &#x5B;]):\n        symbols.add(s&#x5B;&quot;name&quot;])\n\nprint(&quot;Symbols found:&quot;, symbols)\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This confirms which tickers appeared in the feed and helps you understand how symbols are tagged inside each story.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nSymbols found: {&#039;BYDDF&#039;, &#039;AMTM&#039;, &#039;WSHP&#039;, &#039;WYFI&#039;, &#039;WMT&#039;, &#039;CRWV&#039;, &#039;SRPT&#039;, &#039;SPY&#039;, &#039;COIN&#039;, &#039;PLTR&#039;, &#039;RIOT&#039;, &#039;SMCI&#039;, &#039;SMX&#039;, &#039;AAPL&#039;, &#039;CORZ&#039;, &#039;META&#039;, &#039;EQL&#039;, &#039;KLIC&#039;, &#039;GEV&#039;, &#039;$SOL&#039;, &#039;NBIS&#039;, &#039;MHUA&#039;, &#039;WULF&#039;, &#039;SMDV&#039;, &#039;$XRP&#039;, &#039;MP&#039;, &#039;TSM&#039;, &#039;BAM&#039;, &#039;ACM&#039;, &#039;CRCL&#039;, &#039;SLMT&#039;, &#039;BE&#039;, &#039;BYDDY&#039;, &#039;NVDA&#039;, &#039;FXI&#039;, &#039;XHG&#039;, &#039;MRVL&#039;, &#039;GM&#039;, &#039;ORCL&#039;, &#039;AMKR&#039;, &#039;JXG&#039;, &#039;VOO&#039;, &#039;MSFT&#039;, &#039;U&#039;, &#039;APLD&#039;, &#039;SOND&#039;, &#039;AMD&#039;, &#039;BTC&#039;, &#039;IVP&#039;, &#039;PACS&#039;, &#039;CRNC&#039;, &#039;INM&#039;, &#039;$BTC&#039;, &#039;VIVK&#039;, &#039;INTU&#039;, &#039;F&#039;, &#039;$ETH&#039;, &#039;EQWL&#039;, &#039;IWM&#039;, &#039;XLK&#039;, &#039;XLE&#039;, &#039;XLV&#039;, &#039;ODD&#039;, &#039;BRBR&#039;, &#039;CRM&#039;, &#039;MSTR&#039;, &#039;VGT&#039;, &#039;FB&#039;, &#039;RSP&#039;, &#039;HXHX&#039;, &#039;AVGO&#039;, &#039;TSLA&#039;, &#039;QQQ&#039;, &#039;AS&#039;, &#039;XLB&#039;, &#039;CSCO&#039;, &#039;AMZN&#039;, &#039;USO&#039;, &#039;ARM&#039;, &#039;IREN&#039;, &#039;VZLA&#039;, &#039;FINV&#039;, &#039;IJR&#039;, &#039;BRK&#039;, &#039;GOOGL&#039;, &#039;FGL&#039;, &#039;CIFR&#039;, &#039;QCOM&#039;, &#039;$DOGE&#039;, &#039;PANW&#039;, &#039;GOOG&#039;, &#039;MMS&#039;, &#039;GLW&#039;, &#039;GLD&#039;, &#039;CEG&#039;, &#039;DIA&#039;, &#039;ES&#039;, &#039;INTC&#039;}\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Extracting news for a specific date or range<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If you want structured downloads or are working with backfills, date filters are the simplest approach.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\nparams = {\n    &quot;token&quot;: api_key,\n    &quot;dateFrom&quot;: &quot;2025-11-18&quot;,\n    &quot;dateTo&quot;: &quot;2025-11-19&quot;,\n    &quot;pageSize&quot;: 50,\n    &quot;displayOutput&quot;: &quot;abstract&quot;\n}\n\nitems = requests.get(url, params=params, headers=headers).json()\nprint(&quot;Items retrieved:&quot;, len(items))\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">The response comes sorted by published time. You can raise pageSize when collecting larger sets as long as it stays within the allowed limit.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Full article retrieval with displayOutput=full<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When you need the complete body text for NLP or internal summaries, set the display mode to full.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\nparams = {\n    &quot;token&quot;: api_key,\n    &quot;tickers&quot;: &quot;TSLA&quot;,\n    &quot;pageSize&quot;: 5,\n    &quot;displayOutput&quot;: &quot;full&quot;\n}\n\nitem = requests.get(url, params=params).json()&#x5B;0]\nprint(item&#x5B;&quot;title&quot;])\nprint(item&#x5B;&quot;body&quot;]&#x5B;:300], &quot;...&quot;)\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This returns the HTML version of the article so you can parse it with BeautifulSoup or any other library.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nTesla Rival BYD Could Bring Its Japanese &#039;Kei&#039; Car To Europe\n&amp;lt;p&gt;Chinese EV giant &amp;lt;strong&gt;BYD Co. Ltd.&amp;lt;\/strong&gt; &amp;lt;a class=&quot;ticker-link&quot; data-ticker=&quot;BYDDY&quot; data-exchange=&quot;OTC&quot; href=&quot;https:\/\/www.benzinga.com\/quote\/BYDDY&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;(OTC:&amp;lt;a class=&quot;ticker&quot; href=&quot;https:\/\/www.benzinga.com\/quote\/BYDDY&quot;&gt;BYDDY&amp;lt;\/a&gt;)&amp;lt;\/a&gt; &amp;lt;a class=&quot;ticker-link&quot; data-ti ...\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Use Case 2: Applied Filtering and Light Analysis<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Once basic extraction is in place, the next step is to shape the feed into something more targeted. In most workflows, this means filtering by channels, tags or symbols, and turning the response into a structure that is easier to scan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">All examples below assume the same base configuration:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\napi_key = &quot;YOUR_API_KEY&quot;\nurl = &quot;https:\/\/api.benzinga.com\/api\/v2\/news&quot;\nheaders = {&quot;accept&quot;: &quot;application\/json&quot;}\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Filtering by channels<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Channels group stories into broad categories such as Equities, Markets, Tech or WIIM. This makes it straightforward to focus only on certain types of items.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\nparams = {\n    &quot;token&quot;: api_key,\n    &quot;tickers&quot;: &quot;TSLA&quot;,\n    &quot;pageSize&quot;: 20\n}\n\nitems = requests.get(url, params=params, headers=headers).json()\n\ndef channel_names(item):\n    return &#x5B;c&#x5B;&quot;name&quot;] for c in item.get(&quot;channels&quot;, &#x5B;])]\n\nwiim_items = &#x5B;n for n in items if &quot;Movers&quot; in channel_names(n)]\n\nfor n in wiim_items:\n    print(n&#x5B;&quot;id&quot;], n&#x5B;&quot;title&quot;], channel_names(n))\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This pattern narrows the feed to stories that Benzinga flags as Movers while still working off the same endpoint.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\n48990144 Tesla Stock Is Reeling Back Following Previous Gains: What&#039;s Going On? &#x5B;&#039;News&#039;, &#039;Movers&#039;]\n48944697 Is Saudi Arabia About To Become Big Tech&#039;s Next Billion-Dollar AI Playground? &#x5B;&#039;Government&#039;, &#039;News&#039;, &#039;Regulations&#039;, &#039;Top Stories&#039;, &#039;Movers&#039;, &#039;Tech&#039;, &#039;Media&#039;]\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Working with tags<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tags offer a simple way to group news by theme or topic.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\nfrom collections import Counter\n\nparams = {\n    &quot;token&quot;: api_key,\n    &quot;dateFrom&quot;: &quot;2025-11-18&quot;,\n    &quot;dateTo&quot;: &quot;2025-11-19&quot;,\n    &quot;pageSize&quot;: 50\n}\n\nitems = requests.get(url, params=params, headers=headers).json()\n\ntag_counter = Counter()\n\nfor n in items:\n    for t in n.get(&quot;tags&quot;, &#x5B;]):\n        name = t.get(&quot;name&quot;)\n        if name:\n            tag_counter&#x5B;name] += 1\n\nfor tag, count in tag_counter.most_common(10):\n    print(f&quot;{tag}: {count}&quot;)\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This gives a quick view of which themes appeared most often in the selected period.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nDonald Trump: 7\nElon Musk: 4\nJeff Bezos: 3\nExpert Ideas: 3\nzohran mamdani: 2\nJim Chanos: 2\nbenzinga neuro: 2\nelectric vehicles: 2\nmobility: 2\nMichael Burry: 2\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Extracting unique tickers from the feed<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The stocks field identifies which symbols are involved in each story. A common task is to see which names are getting repeated coverage.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\nfrom collections import Counter\n\nparams = {\n    &quot;token&quot;: api_key,\n    &quot;date&quot;: &quot;2025-11-19&quot;,\n    &quot;pageSize&quot;: 100\n}\n\nitems = requests.get(url, params=params, headers=headers).json()\n\nsymbol_counter = Counter()\n\nfor n in items:\n    for s in n.get(&quot;stocks&quot;, &#x5B;]):\n        symbol = s.get(&quot;name&quot;)\n        if symbol:\n            symbol_counter&#x5B;symbol] += 1\n\nfor sym, count in symbol_counter.most_common(10):\n    print(f&quot;{sym}: {count} articles&quot;)\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This can be used on its own or combined with other data to highlight tickers that are consistently in the news.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nNVDA: 15 articles\nTSLA: 10 articles\nGOOG: 5 articles\nAAPL: 4 articles\nMSFT: 4 articles\nLOW: 4 articles\nGOOGL: 4 articles\nAMZN: 4 articles\nPLTR: 4 articles\nTGT: 3 articles\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Flattening the feed into a DataFrame<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For lightweight analysis, it is often useful to flatten the response into a table.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\nimport pandas as pd\n\nparams = {\n    &quot;token&quot;: api_key,\n    &quot;tickers&quot;: &quot;AAPL,MSFT,NVDA,TSLA&quot;,\n    &quot;pageSize&quot;: 40\n}\n\nitems = requests.get(url, params=params, headers=headers).json()\n\nrows = &#x5B;]\nfor n in items:\n    row = {\n        &quot;id&quot;: n.get(&quot;id&quot;),\n        &quot;title&quot;: n.get(&quot;title&quot;),\n        &quot;created&quot;: n.get(&quot;created&quot;),\n        &quot;url&quot;: n.get(&quot;url&quot;),\n        &quot;channels&quot;: &quot;, &quot;.join(c&#x5B;&quot;name&quot;] for c in n.get(&quot;channels&quot;, &#x5B;])),\n        &quot;tickers&quot;: &quot;, &quot;.join(s&#x5B;&quot;name&quot;] for s in n.get(&quot;stocks&quot;, &#x5B;])),\n        &quot;tags&quot;: &quot;, &quot;.join(t&#x5B;&quot;name&quot;] for t in n.get(&quot;tags&quot;, &#x5B;])),\n    }\n    rows.append(row)\n\ndf = pd.DataFrame(rows)\ndf.head()\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This produces a compact view that is easy to filter or export, and serves as a bridge to the more advanced workflows in the next section.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"330\" src=\"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-3-1024x330.png\" alt=\"\" class=\"wp-image-8415\" srcset=\"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-3-1024x330.png 1024w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-3-300x97.png 300w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-3-768x247.png 768w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-3-1536x495.png 1536w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-3.png 1903w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Use Case 3: Combining News with Price Action<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In many tools, headlines are not viewed in isolation. They are placed next to recent price moves to give a clearer sense of how the market reacted. The Newsfeed endpoint and the Historical Bar Data endpoint can be combined to build that kind of view.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The example below uses WIIM stories for a single stock and aligns them with intraday bars from the same session.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pulling WIIM headlines for a symbol<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">First, request WIIM tagged news for a chosen stock and trading day. The channels filter keeps the response focused on items where Benzinga provides a \u201cWhy Is It Moving\u201d explanation.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\nimport requests\nimport pandas as pd\n\napi_key = &quot;YOUR API KEY&quot;\n\nnews_url = &quot;https:\/\/api.benzinga.com\/api\/v2\/news&quot;\nheaders = {&quot;accept&quot;: &quot;application\/json&quot;}\n\nnews_params = {\n    &quot;token&quot;: api_key,\n    &quot;tickers&quot;: &quot;TSLA&quot;,\n    &quot;channels&quot;: &quot;Why Is It Moving&quot;,\n    &quot;date&quot;: &quot;2025-11-19&quot;,\n    &quot;pageSize&quot;: 50\n}\n\nnews_items = requests.get(news_url, params=news_params, headers=headers).json()\n\nrows = &#x5B;]\nfor n in news_items:\n    rows.append(\n        {\n            &quot;news_id&quot;: n.get(&quot;id&quot;),\n            &quot;created&quot;: n.get(&quot;created&quot;),\n            &quot;title&quot;: n.get(&quot;title&quot;),\n            &quot;url&quot;: n.get(&quot;url&quot;),\n        }\n    )\n\nnews_df = pd.DataFrame(rows)\nnews_df&#x5B;&quot;created&quot;] = pd.to_datetime(news_df&#x5B;&quot;created&quot;])\nnews_df.sort_values(&quot;created&quot;, inplace=True)\nnews_df.head(10)\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This produces a small table with the headline id, timestamp, title and url. It also ensures the timestamps are in a format that can be joined with price data.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"359\" src=\"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-4-1024x359.png\" alt=\"\" class=\"wp-image-8422\" srcset=\"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-4-1024x359.png 1024w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-4-300x105.png 300w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-4-768x270.png 768w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-4-1536x539.png 1536w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-4.png 1772w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Loading intraday bars for the same session<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Next, request 5-minute bars for the same symbol and day from the <a href=\"https:\/\/docs.benzinga.com\/benzinga-apis\/bars\/bars-v2\"><strong>Historical Bar Data endpoint<\/strong><\/a>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nbars_url = &quot;https:\/\/api.benzinga.com\/api\/v2\/bars&quot;\n\nbars_params = {\n    &quot;token&quot;: api_key,\n    &quot;symbols&quot;: &quot;TSLA&quot;,\n    &quot;from&quot;: &quot;2025-11-19&quot;,\n    &quot;to&quot;: &quot;2025-11-20&quot;,\n    &quot;interval&quot;: &quot;5M&quot;\n}\n\nbars_resp = requests.get(bars_url, params=bars_params, headers=headers).json()\nbars_resp&#x5B;0].keys()\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">The response contains one object per symbol, with a candles array for the bar data.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\ncandles = bars_resp&#x5B;0]&#x5B;&quot;candles&quot;]\n\nbar_rows = &#x5B;]\nfor c in candles:\n    bar_rows.append(\n        {\n            &quot;dateTime&quot;: c.get(&quot;dateTime&quot;),\n            &quot;open&quot;: float(c.get(&quot;open&quot;, 0)),\n            &quot;high&quot;: float(c.get(&quot;high&quot;, 0)),\n            &quot;low&quot;: float(c.get(&quot;low&quot;, 0)),\n            &quot;close&quot;: float(c.get(&quot;close&quot;, 0)),\n            &quot;volume&quot;: int(c.get(&quot;volume&quot;, 0)),\n        }\n    )\n\nbars_df = pd.DataFrame(bar_rows)\nbars_df&#x5B;&quot;dateTime&quot;] = pd.to_datetime(bars_df&#x5B;&quot;dateTime&quot;])\nbars_df.sort_values(&quot;dateTime&quot;, inplace=True)\nbars_df.head(10)\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">At this point, there are two aligned time series. One with discrete news events. One with regular price bars.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"610\" src=\"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-1-1024x610.png\" alt=\"\" class=\"wp-image-8413\" srcset=\"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-1-1024x610.png 1024w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-1-300x179.png 300w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-1-768x457.png 768w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-1.png 1266w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Matching WIIM events with nearby price moves<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A simple way to study the relationship is to match each news item to the nearest bar and then look at the price before and after the headline.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\nnews_df.created = pd.to_datetime(news_df.created, utc=True)\nbars_df.dateTime = pd.to_datetime(bars_df.dateTime, utc=True)\n\nmerged = pd.merge_asof(\n    news_df.sort_values(&quot;created&quot;),\n    bars_df.sort_values(&quot;dateTime&quot;),\n    left_on=&quot;created&quot;,\n    right_on=&quot;dateTime&quot;,\n    direction=&quot;forward&quot;\n)\n\nbars_df = bars_df.reset_index(drop=True)\nbars_df&#x5B;&quot;close_next&quot;] = bars_df&#x5B;&quot;close&quot;].shift(-1)\n\nmerged = pd.merge(\n    merged,\n    bars_df&#x5B;&#x5B;&quot;dateTime&quot;, &quot;close_next&quot;]],\n    on=&quot;dateTime&quot;,\n    how=&quot;left&quot;,\n)\n\nmerged = merged.drop(&quot;close_next_y&quot;, axis=1).rename(columns={&quot;close_next_x&quot;:&quot;close_next&quot;})\n\nmerged&#x5B;&quot;return_next_bar_pct&quot;] = ((merged&#x5B;&quot;close_next&quot;] - merged&#x5B;&quot;close&quot;]) \/ merged&#x5B;&quot;close&quot;] * 100)\n\nmerged = merged.dropna()\ncols = &#x5B;&quot;news_id&quot;, &quot;created&quot;, &quot;title&quot;, &quot;close&quot;, &quot;close_next&quot;, &quot;return_next_bar_pct&quot;]\n\nmerged&#x5B;cols].tail()\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">The result is a compact table where each WIIM story is paired with the closing price at the time of the headline and the next bar\u2019s close. It is not a full trading model, but it is enough to support tools that overlay news with price, or to give users a clearer sense of how the market responded around key events.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"199\" src=\"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-1024x199.png\" alt=\"\" class=\"wp-image-8411\" srcset=\"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-1024x199.png 1024w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-300x58.png 300w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-768x149.png 768w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-1536x298.png 1536w, https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image.png 1839w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This pattern can be extended further. For example, by widening the window to several bars, exporting the table to a dashboard, or combining it with other endpoints in the Benzinga suite.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Common Questions About Stock News APIs<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What is a news API for stocks?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A news API for stocks provides market headlines in a structured format that includes timestamps, tickers, channels and links. It allows trading systems and research tools to retrieve relevant stories without scraping or manually scanning multiple websites.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How is a stock news API different from a stock data API?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A stock news API focuses on events, while a stock data API focuses on prices and fundamentals. News APIs supply context through headlines and articles. Stock data APIs supply price history, delayed quotes and other numerical data. Both are often used together to understand why a stock is moving and how the market reacted.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why do traders rely on structured news feeds?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Structured news makes it easier to track specific companies, themes or catalysts. Tickers, tags and channels allow filtering without reading each article individually. This structure also helps connect headlines with intraday price changes or alert systems that surface important updates quickly.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Closing Notes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/www.benzinga.com\/apis\/cloud-product\/bz-why-is-it-moving\/\"><strong>Newsfeed and WIM endpoint<\/strong><\/a> offers a straightforward way to bring structured market headlines into research workflows and trading tools. It provides consistent fields, reliable timestamps and clear tagging, which makes it easier to filter events, monitor themes and connect headlines with price action.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to explore further or integrate additional data types, the full <a href=\"https:\/\/docs.benzinga.com\/home\">Benzinga API documentation<\/a> includes endpoints for quotes, bars and other market datasets that work smoothly alongside the news feed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Markets respond to information faster than anything else, and most of that information begins with a headline. An earnings update, a regulatory note, a product issue, even a short line from an analyst can move a stock before the chart shows any sign of it. Traders and researchers depend on structured news because it gives [&hellip;]<\/p>\n","protected":false},"author":77,"featured_media":8431,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-8410","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Mastering the Newsfeed API: Tracking Real-Time Headlines and Price Drivers in Python - Benzinga APIs<\/title>\n<meta name=\"description\" content=\"A practical guide to Benzinga\u2019s Newsfeed and WIM API. Learn how to pull structured stock news, filter events and combine headlines with price data using Python.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mastering the Newsfeed API: Tracking Real-Time Headlines and Price Drivers in Python - Benzinga APIs\" \/>\n<meta property=\"og:description\" content=\"A practical guide to Benzinga\u2019s Newsfeed and WIM API. Learn how to pull structured stock news, filter events and combine headlines with price data using Python.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/\" \/>\n<meta property=\"og:site_name\" content=\"Benzinga APIs\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Benzinga\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-21T12:52:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-24T16:26:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-5.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1170\" \/>\n\t<meta property=\"og:image:height\" content=\"780\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tommy Cotter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Benzinga\" \/>\n<meta name=\"twitter:site\" content=\"@Benzinga\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tommy Cotter\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/blog\\\/mastering-the-benzinga-newsfeed-api\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/blog\\\/mastering-the-benzinga-newsfeed-api\\\/\"},\"author\":{\"name\":\"Tommy Cotter\",\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/#\\\/schema\\\/person\\\/0f1603d4e33f044ab59c4a9faf26f2a3\"},\"headline\":\"Mastering the Newsfeed API: Tracking Real-Time Headlines and Price Drivers in Python\",\"datePublished\":\"2025-11-21T12:52:54+00:00\",\"dateModified\":\"2025-11-24T16:26:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/blog\\\/mastering-the-benzinga-newsfeed-api\\\/\"},\"wordCount\":1906,\"publisher\":{\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/blog\\\/mastering-the-benzinga-newsfeed-api\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/image-5.png\",\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/blog\\\/mastering-the-benzinga-newsfeed-api\\\/\",\"url\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/blog\\\/mastering-the-benzinga-newsfeed-api\\\/\",\"name\":\"Mastering the Newsfeed API: Tracking Real-Time Headlines and Price Drivers in Python - Benzinga APIs\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/blog\\\/mastering-the-benzinga-newsfeed-api\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/blog\\\/mastering-the-benzinga-newsfeed-api\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/image-5.png\",\"datePublished\":\"2025-11-21T12:52:54+00:00\",\"dateModified\":\"2025-11-24T16:26:53+00:00\",\"description\":\"A practical guide to Benzinga\u2019s Newsfeed and WIM API. Learn how to pull structured stock news, filter events and combine headlines with price data using Python.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/blog\\\/mastering-the-benzinga-newsfeed-api\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/blog\\\/mastering-the-benzinga-newsfeed-api\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/blog\\\/mastering-the-benzinga-newsfeed-api\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/image-5.png\",\"contentUrl\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/image-5.png\",\"width\":1170,\"height\":780,\"caption\":\"Mastering the Newsfeed API: Tracking Real-Time Headlines and Price Drivers in Python\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/blog\\\/mastering-the-benzinga-newsfeed-api\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mastering the Newsfeed API: Tracking Real-Time Headlines and Price Drivers in Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/#website\",\"url\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/\",\"name\":\"Benzinga APIs\",\"description\":\"Accurate &amp; Lightning Fast - Cloud Based Financial Market Data &amp; APIs\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/#organization\",\"name\":\"Benzinga\",\"url\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/s3.amazonaws.com\\\/wp-uploads.benzinga-events.prod\\\/apis\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/05134917\\\/schema-image-default.jpg\",\"contentUrl\":\"https:\\\/\\\/s3.amazonaws.com\\\/wp-uploads.benzinga-events.prod\\\/apis\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/05134917\\\/schema-image-default.jpg\",\"width\":1043,\"height\":1043,\"caption\":\"Benzinga\"},\"image\":{\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Benzinga\",\"https:\\\/\\\/x.com\\\/Benzinga\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/#\\\/schema\\\/person\\\/0f1603d4e33f044ab59c4a9faf26f2a3\",\"name\":\"Tommy Cotter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f2e16f21ac328f64382089661047faff4abc84c136d912b95dc55fc88fdf042f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f2e16f21ac328f64382089661047faff4abc84c136d912b95dc55fc88fdf042f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f2e16f21ac328f64382089661047faff4abc84c136d912b95dc55fc88fdf042f?s=96&d=mm&r=g\",\"caption\":\"Tommy Cotter\"},\"url\":\"https:\\\/\\\/www.benzinga.com\\\/apis\\\/author\\\/thomascotterbenzinga-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mastering the Newsfeed API: Tracking Real-Time Headlines and Price Drivers in Python - Benzinga APIs","description":"A practical guide to Benzinga\u2019s Newsfeed and WIM API. Learn how to pull structured stock news, filter events and combine headlines with price data using Python.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/","og_locale":"en_US","og_type":"article","og_title":"Mastering the Newsfeed API: Tracking Real-Time Headlines and Price Drivers in Python - Benzinga APIs","og_description":"A practical guide to Benzinga\u2019s Newsfeed and WIM API. Learn how to pull structured stock news, filter events and combine headlines with price data using Python.","og_url":"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/","og_site_name":"Benzinga APIs","article_publisher":"https:\/\/www.facebook.com\/Benzinga","article_published_time":"2025-11-21T12:52:54+00:00","article_modified_time":"2025-11-24T16:26:53+00:00","og_image":[{"width":1170,"height":780,"url":"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-5.png","type":"image\/png"}],"author":"Tommy Cotter","twitter_card":"summary_large_image","twitter_creator":"@Benzinga","twitter_site":"@Benzinga","twitter_misc":{"Written by":"Tommy Cotter","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/#article","isPartOf":{"@id":"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/"},"author":{"name":"Tommy Cotter","@id":"https:\/\/www.benzinga.com\/apis\/#\/schema\/person\/0f1603d4e33f044ab59c4a9faf26f2a3"},"headline":"Mastering the Newsfeed API: Tracking Real-Time Headlines and Price Drivers in Python","datePublished":"2025-11-21T12:52:54+00:00","dateModified":"2025-11-24T16:26:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/"},"wordCount":1906,"publisher":{"@id":"https:\/\/www.benzinga.com\/apis\/#organization"},"image":{"@id":"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/#primaryimage"},"thumbnailUrl":"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-5.png","inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/","url":"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/","name":"Mastering the Newsfeed API: Tracking Real-Time Headlines and Price Drivers in Python - Benzinga APIs","isPartOf":{"@id":"https:\/\/www.benzinga.com\/apis\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/#primaryimage"},"image":{"@id":"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/#primaryimage"},"thumbnailUrl":"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-5.png","datePublished":"2025-11-21T12:52:54+00:00","dateModified":"2025-11-24T16:26:53+00:00","description":"A practical guide to Benzinga\u2019s Newsfeed and WIM API. Learn how to pull structured stock news, filter events and combine headlines with price data using Python.","breadcrumb":{"@id":"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/#primaryimage","url":"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-5.png","contentUrl":"https:\/\/www.benzinga.com\/apis\/wp-content\/uploads\/2025\/11\/image-5.png","width":1170,"height":780,"caption":"Mastering the Newsfeed API: Tracking Real-Time Headlines and Price Drivers in Python"},{"@type":"BreadcrumbList","@id":"https:\/\/www.benzinga.com\/apis\/blog\/mastering-the-benzinga-newsfeed-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.benzinga.com\/apis\/"},{"@type":"ListItem","position":2,"name":"Mastering the Newsfeed API: Tracking Real-Time Headlines and Price Drivers in Python"}]},{"@type":"WebSite","@id":"https:\/\/www.benzinga.com\/apis\/#website","url":"https:\/\/www.benzinga.com\/apis\/","name":"Benzinga APIs","description":"Accurate &amp; Lightning Fast - Cloud Based Financial Market Data &amp; APIs","publisher":{"@id":"https:\/\/www.benzinga.com\/apis\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.benzinga.com\/apis\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.benzinga.com\/apis\/#organization","name":"Benzinga","url":"https:\/\/www.benzinga.com\/apis\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.benzinga.com\/apis\/#\/schema\/logo\/image\/","url":"https:\/\/s3.amazonaws.com\/wp-uploads.benzinga-events.prod\/apis\/wp-content\/uploads\/2022\/07\/05134917\/schema-image-default.jpg","contentUrl":"https:\/\/s3.amazonaws.com\/wp-uploads.benzinga-events.prod\/apis\/wp-content\/uploads\/2022\/07\/05134917\/schema-image-default.jpg","width":1043,"height":1043,"caption":"Benzinga"},"image":{"@id":"https:\/\/www.benzinga.com\/apis\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Benzinga","https:\/\/x.com\/Benzinga"]},{"@type":"Person","@id":"https:\/\/www.benzinga.com\/apis\/#\/schema\/person\/0f1603d4e33f044ab59c4a9faf26f2a3","name":"Tommy Cotter","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f2e16f21ac328f64382089661047faff4abc84c136d912b95dc55fc88fdf042f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f2e16f21ac328f64382089661047faff4abc84c136d912b95dc55fc88fdf042f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f2e16f21ac328f64382089661047faff4abc84c136d912b95dc55fc88fdf042f?s=96&d=mm&r=g","caption":"Tommy Cotter"},"url":"https:\/\/www.benzinga.com\/apis\/author\/thomascotterbenzinga-com\/"}]}},"_links":{"self":[{"href":"https:\/\/www.benzinga.com\/apis\/wp-json\/wp\/v2\/posts\/8410","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.benzinga.com\/apis\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.benzinga.com\/apis\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.benzinga.com\/apis\/wp-json\/wp\/v2\/users\/77"}],"replies":[{"embeddable":true,"href":"https:\/\/www.benzinga.com\/apis\/wp-json\/wp\/v2\/comments?post=8410"}],"version-history":[{"count":2,"href":"https:\/\/www.benzinga.com\/apis\/wp-json\/wp\/v2\/posts\/8410\/revisions"}],"predecessor-version":[{"id":8438,"href":"https:\/\/www.benzinga.com\/apis\/wp-json\/wp\/v2\/posts\/8410\/revisions\/8438"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.benzinga.com\/apis\/wp-json\/wp\/v2\/media\/8431"}],"wp:attachment":[{"href":"https:\/\/www.benzinga.com\/apis\/wp-json\/wp\/v2\/media?parent=8410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.benzinga.com\/apis\/wp-json\/wp\/v2\/categories?post=8410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.benzinga.com\/apis\/wp-json\/wp\/v2\/tags?post=8410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}