<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Developers - Shodan Blog]]></title><description><![CDATA[The latest news and developments for Shodan.]]></description><link>https://blog.shodan.io/</link><generator>Ghost 0.7</generator><lastBuildDate>Fri, 10 Apr 2026 08:49:52 GMT</lastBuildDate><atom:link href="https://blog.shodan.io/tag/developers/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Introducing the Shodan Real-Time Stream]]></title><description><![CDATA[<p>Do you want to keep an eye on the latest results coming into Shodan? Want to create your own custom data feeds? Or want to grab a few thousand random web servers for your research? Using the Streaming API from Shodan you can directly subscribe to the raw data feed</p>]]></description><link>https://blog.shodan.io/shodan-real-time-stream/</link><guid isPermaLink="false">05c71efa-c8a3-4183-8c9d-7ef1aa84e136</guid><category><![CDATA[API]]></category><category><![CDATA[Shodan]]></category><category><![CDATA[Firehose]]></category><category><![CDATA[Stream]]></category><category><![CDATA[Developers]]></category><dc:creator><![CDATA[John Matherly]]></dc:creator><pubDate>Thu, 23 Jul 2015 03:12:59 GMT</pubDate><media:content url="http://blog.shodan.io/content/images/2015/07/DsHZk.png" medium="image"/><content:encoded><![CDATA[<img src="http://blog.shodan.io/content/images/2015/07/DsHZk.png" alt="Introducing the Shodan Real-Time Stream"><p>Do you want to keep an eye on the latest results coming into Shodan? Want to create your own custom data feeds? Or want to grab a few thousand random web servers for your research? Using the Streaming API from Shodan you can directly subscribe to the raw data feed from the crawlers! The feed streams between 400-500 banners every second and depending on your API plan you have access to all or a fraction of it. And to get started with the stream you don't need any programming knowledge, just install the <a href="https://cli.shodan.io">Shodan command-line tool</a> and you're good to go. I've created a video that highlights some of the basic usage using the <strong>shodan</strong> command. Note that unless you use <strong>--limit</strong> or hit CTRL + C the stream will continue going forever:</p>

<script type="text/javascript" src="https://asciinema.org/a/23809.js" id="asciicast-23809" async></script>

<h4 id="shodanstream">shodan stream</h4>

<p>At the heart is the <strong>stream</strong> command that when run by itself will simply stream all data you have access to and print it to your terminal. It won't store the data anywhere or perform any operations on it. Use this command if you'd like to explore random IPs on the Internet.</p>

<h6 id="ports">--ports</h6>

<p>Often you're only interested in a certain type of service, and for those instances you can narrow down the stream using the <strong>--ports</strong> option. You can provide one port:</p>

<pre><code>shodan stream --ports 23
</code></pre>

<p>Or many ports:</p>

<pre><code>shodan stream --ports 23,1023
</code></pre>

<p>And without any other arguments it will once again just print the results to the terminal.</p>

<h6 id="datadir">--datadir</h6>

<p>Most of the time you also want to store the results so you're not throwing away information. To do so, simply create a directory and supply the <strong>--datadir</strong> option to the streaming command. This will result in the shodan tool storing the results from the stream in a file in the data folder, where the file name is the current date in YYYY-MM-DD.json.gz format:</p>

<pre><code>mkdir shodan-data
shodan stream --datadir shodan-data
</code></pre>

<p>This is useful so you can keep the streaming command running and every day a new file will automatically be created for you. And then you can use the <strong>shodan parse</strong> command to extract the information you care about.</p>

<h6 id="limit">--limit</h6>

<p>Sometimes you want to get a random sample of results. Lets say you'd like to see how many of the most recent 10,000 results are Nginx vs Apache vs Lighttpd etc. You can take periodic samplings to see how those trends change over time using your own computer. To get 10,000 web server results use the <strong>--limit</strong> option to make the stream command exit after it has received the provided number of results:</p>

<pre><code>shodan stream --limit 10000 --ports 80
</code></pre>

<p>The above command would filter the stream for web servers running on port 80 (<strong>--port 80</strong>) and it would exit after 10,000 results were received (<strong>--limit</strong>).</p>

<p>I use the real-time stream for a lot of my own research and I hope you'll find it useful as well! If you have any thoughts, questions or suggestions please let me know <a href="https://twitter.com/achillean">@achillean</a></p>]]></content:encoded></item></channel></rss>