<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Salomon</title>
    <description>The latest articles on DEV Community by Salomon (@salomon_c7d44a2175a53c6d3).</description>
    <link>https://dev.to/salomon_c7d44a2175a53c6d3</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3995456%2Fb9cf0495-73fa-4de4-8c0f-e1d8a7220f92.png</url>
      <title>DEV Community: Salomon</title>
      <link>https://dev.to/salomon_c7d44a2175a53c6d3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/salomon_c7d44a2175a53c6d3"/>
    <language>en</language>
    <item>
      <title>I Got Tired of Paying $99/mo for Options Data — So I Built My Own API tags: python, api, finance, showdev</title>
      <dc:creator>Salomon</dc:creator>
      <pubDate>Sun, 21 Jun 2026 15:41:23 +0000</pubDate>
      <link>https://dev.to/salomon_c7d44a2175a53c6d3/i-got-tired-of-paying-99mo-for-options-data-so-i-built-my-own-api-tags-python-api-finance-40d2</link>
      <guid>https://dev.to/salomon_c7d44a2175a53c6d3/i-got-tired-of-paying-99mo-for-options-data-so-i-built-my-own-api-tags-python-api-finance-40d2</guid>
      <description>&lt;p&gt;I build algorithmic trading bots as a side project. Nothing fancy — just small strategies that trade US equity options automatically.&lt;/p&gt;

&lt;p&gt;The problem I kept running into wasn't the strategy logic. It was the data.&lt;/p&gt;

&lt;p&gt;Every time I wanted to pull real-time options chains, Greeks, or IV, I had two options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pay $99+/mo to a data provider&lt;/li&gt;
&lt;li&gt;Scrape something I probably shouldn't be scraping&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Neither felt right for a hobbyist project. So I built &lt;a href="https://market-option.com/" rel="noopener noreferrer"&gt;Market-Options&lt;/a&gt; — a simple REST API for US equity options data at $20/mo.&lt;/p&gt;




&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;p&gt;It's a plain REST API. No SDK, no special client library — just HTTP requests and JSON responses.&lt;/p&gt;

&lt;p&gt;It covers four endpoints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;chain&lt;/strong&gt; — full options chain for a given underlying&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;contract&lt;/strong&gt; — data for a single contract&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;contracts&lt;/strong&gt; — batch lookup across multiple contracts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;contract-overview&lt;/strong&gt; — Greeks, IV, expiration details&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Coverage is the top 100 US equity underlyings, which accounts for roughly 95% of actual US options volume. If you're building a bot that trades SPY, QQQ, AAPL, TSLA, or anything in that tier — it's covered.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Only 100 Underlyings?
&lt;/h2&gt;

&lt;p&gt;Because that's what most people actually trade.&lt;/p&gt;

&lt;p&gt;When I looked at my own bots, and at what most retail algo traders focus on, the top 100 covers everything practical. Exotic underlyings with low volume are also harder to get real data on reliably — so rather than promise coverage I can't deliver, I focused on doing the core well.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Simple Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://api.market-option.com/chain?symbol=SPY&amp;amp;expiration=2025-01-17"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer YOUR_API_KEY"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Response is clean JSON:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"symbol"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"SPY"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"expiration"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2025-01-17"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"strike"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;480&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"call"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"bid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;3.45&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"ask"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;3.50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"iv"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.182&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"delta"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"gamma"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.031&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"theta"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;-0.18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"vega"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.29&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No parsing headaches, no weird date formats.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free tier&lt;/strong&gt;: 1,000 credits/day — enough to test and build&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro&lt;/strong&gt;: $20/mo, unlimited within fair use&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trial&lt;/strong&gt;: New accounts get 7 days of Pro, no credit card required&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Who It's For
&lt;/h2&gt;

&lt;p&gt;Honestly, it's for people like me — developers who want to build something real with options data without a $99+/mo commitment before they've even proven the strategy works.&lt;/p&gt;

&lt;p&gt;If you're building a bot, backtesting a strategy, or just exploring options pricing programmatically, give it a try.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://market-option.com/" rel="noopener noreferrer"&gt;market-option.com&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Would love feedback — what endpoints or data points are missing that would make this useful for your use case?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>api</category>
      <category>showdev</category>
      <category>developer</category>
    </item>
  </channel>
</rss>
