{"id":193973,"date":"2023-07-25T12:44:56","date_gmt":"2023-07-25T16:44:56","guid":{"rendered":"https:\/\/ibkrcampus.com\/?post_type=trading-lessons&#038;p=193973"},"modified":"2025-10-03T14:17:48","modified_gmt":"2025-10-03T18:17:48","slug":"market-scanners","status":"publish","type":"trading-lessons","link":"https:\/\/www.interactivebrokers.com\/campus\/trading-lessons\/market-scanners\/","title":{"rendered":"Market Scanners"},"content":{"rendered":"\n<p>Hello, and welcome to this lesson on the Interactive Brokers Client Portal API. In this lesson, we will be discussing how to retrieve the various scanner parameters, how to read the parameters list, and how to make a request using those parameters.<\/p>\n\n\n\n<p><strong>Requesting the Scanner Parameters<\/strong><\/p>\n\n\n\n<p>&nbsp;To begin, I can build out my initial framework as I have done before and prepare a scanParams method. &nbsp;In this case, I will build out an \u2018endpoint\u2019 variable, and set it equal to \u201ciserver\/scanner\/params\u201d. This will return a list of parameters that we would have to reference for our market scanner. Then, we can make a simple get request, and build out our json.dumps method as we have done throughout the series.<\/p>\n\n\n\n<p>As an exception to the standard, we will actually be displaying our details a bit differently than normal. Let\u2019s create a variable, paramFile, and set it equal to \u2018open(\u201c.\/scannerParams.xml\u201d, \u201cw\u201d)\u2019. What this means is that we will create a file using python, I will be calling it \u2018scannerParams.xml\u2019, and I will be writing to it, based on the mode, \u201cw\u201d. Now, I want to start iterating through my json inside my file.<\/p>\n\n\n\n<p>To do this, I will write \u201cfor I in params_json:\u201d, and then on an indented new line simply write \u201cparamFile.write(i)\u201d. Finally, I can move to an unindented new line, I will write paramFile.close(). What this all means is that I will open a designated file, and for each new content in the json response, I will write it into this file.<\/p>\n\n\n\n<p>You are welcome to print this directly; however, given the amount of information returned, and how&nbsp;frequently&nbsp;we may need to reference this information, it is often best to do so by writing it out&nbsp;to a file.&nbsp;&nbsp;<\/p>\n\n\n\n<p>If you would like to have peace of mind that the request was successful without referencing the directory, you may also opt to print the params_req.status_code value after closing our file. After running this code, while I won\u2019t have anything in my console, I can see in my folder that there is a new file. With our new file downloaded, we can make a new python file to start our framework. We will come back to the new XML file in just a moment.<\/p>\n\n\n\n<p><strong>Building our Scanner Request<\/strong><\/p>\n\n\n\n<p>I will jump into a new file, such as \u201cmarketScanner.py\u201d. I can then build out my typical framework along with my method, \u2018scannerRequest()\u2019. With the framework of our file set, I will go ahead and set my endpoint variable to iserver\/scanner\/run.<\/p>\n\n\n\n<p>Now for this request, we will need to use a JSON body, so I will go ahead with constructing that. I will call it \u2018scan_body\u2019 and set it equal to a set of curly brackets for the array value. Inside these brackets, we need to create a few fields, including \u201cinstrument\u201d, \u201clocation\u201d, \u201ctype\u201d, and \u201cfilter\u201d.<\/p>\n\n\n\n<p>With the body set for now, I will create a variable, \u2018scan_req\u2019 to make a POST request. Then I can set the URL to \u2018base_url+endpoint\u2019, verify to False, and then I will make \u2018json\u2019 set it to our \u2018scan_body\u2019 variable. Then I will print the json.dumps variable when all is said and done.<\/p>\n\n\n\n<p><strong>Understanding the Parameters XML File<\/strong><\/p>\n\n\n\n<p>Jumping back to our XML file, we know what fields we need to look for. Let\u2019s start with \u201cinstrument\u201d and \u201clocation\u201d to see what we\u2019d like to work with. I know I want to work with Stocks and I do not trade outside of the US. To find this, let\u2019s look under the \u2018location_tree\u2019 section.<\/p>\n\n\n\n<p>With how we exported the XML, we can see a range of display names discussing what we want, such as \u201cUS Stocks\u201d, \u201cUS Equity\u201d, and many more. The typical structure for the \u2018instrument\u2019 field will be just the security type, so in our case it is just \u201cSTK\u201d.<\/p>\n\n\n\n<p>Looking right next to this, I can see the available \u2018locations\u2019 that correspond with this. I trade the major exchanges like NYSE and NASDAQ, so I will use \u201cSTK.US.MAJOR\u201d. However, if I traded Pinks or on the OTC market, I could use \u2018STK.US.MINOR\u2019. And as always, we would encourage you to explore this document as much as possible to find what suits your needs.<\/p>\n\n\n\n<p>With \u2018instrument\u2019 and \u2018location\u2019 done, we now need the \u2018type\u2019 field. This will be the system Interactive Brokers will use to sort your scanner with. All of these scanner types are conveniently located under the \u2018scan_type\u2019 list section. This section is broken up to display a human readable tag, \u2018display_name\u2019, followed by the \u2018code\u2019, which is equivalent to what we\u2019d enter into our scan body\u2019s \u201ctype\u201d field, and then a list of instruments the scanner type works with. I think I will sort my list using the \u2018Top % Gainers\u2019 type or \u2018TOP_PERC_GAIN\u2019, though I would strongly encourage reading through the available offerings.<\/p>\n\n\n\n<p>With this built out, I would like to take another look at our \u2018market_scanner.py\u2019 file again. With our new values, I can make a very basic request. So in my case, I will set \u201cinstrument\u201d:\u201dSTK\u201d, \u201clocations\u201d:\u201dSTK.US.MAJOR\u201d, and \u201ctype\u201d:\u201dTOP_PERC_GAIN\u201d, and then leave \u201cfilter\u201d as an empty list, []. If I run this code, we will see a variety of returned values that we can work with, and in a neat order from 0 all the way to 49 including their contract information.<\/p>\n\n\n\n<p><strong>Understanding how to use Filters<\/strong><\/p>\n\n\n\n<p>We can finalize our lesson by discussing potential filters you will want to add to your request, as you may not want the minimally sorted values. To find available filters, we will need to jump back to our XML file and go to the \u2018instrument_list\u2019 section. Here, we can see each set of filters unique to a given security type. We can see these dictionaries are divided into \u2019display_name\u2019, \u2018type\u2019, and \u2018filters\u2019 like before. I am still working with US Stocks, and so I will investigate the first return here. Looking at our \u2018filters\u2019 section, we can see a wide range of values for US Stocks alone.<\/p>\n\n\n\n<p>In addition to this section, we can also jump to the \u2018filter_list\u2019 section of the XML file as well. There will be a wide range that will include many common filter requests. In my case, I know I want to filter out my instrument price to an exact range, so I will go ahead and jump down several lines until I see the \u201cpriceAbove\u201d filter. As you may have noticed, many of these filters are very similar to those available on Interactive Brokers\u2019 other platforms, like Client Portal or Trader Workstation. I want to filter my price range, so I will be using the priceAbove and priceBelow filters. Having chosen my filters, I will go back to my scanner file, and add these to my \u2018filters\u2019 list.<\/p>\n\n\n\n<p>The way to add filters is rather straightforward. Within the list, each filter will be in its own array made by two curly brackets. Within there, we will include fields \u201ccode\u201d and \u201cvalue\u201d. As an example, we will use {\u201ccode\u201d: \u201cpriceAbove\u201d, \u201cvalue\u201d: 101}. This means that we only want our filter to show contracts with a price above $101. Next, I will mirror this filter with {\u201ccode\u201d: \u201cpriceBelow\u201d, \u201cvalue\u201d: 110}. This should now only return contracts that have a price between $101 and $110.<\/p>\n\n\n\n<p>It is important to note that with the inclusion of filtering in the mix, I may receive a reduced number of contracts, or potentially none at all. This is typically a sign of aggressive filtering which does not leave any contracts to match your parameters. This is not necessarily a problem, it means you might need to relax your scanner focus, or potentially remove a few filters.<\/p>\n\n\n\n<p>But with that said, once we run this code, we should see a strong selection of contracts that match our filtered range, that we can now use for requesting market data or placing orders.<\/p>\n\n\n\n<p>Thank you for watching this lesson on Market Scanners in the Client Portal API. If you find this lesson helpful, please check out our other lessons in the Client Portal API tutorial series.<\/p>\n\n\n\n<p><strong>Code Snippets<\/strong> &#8211; <strong>scannerParams.py<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import requests\nimport json\n\n# Disable SSL Warnings\nimport urllib3\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\ndef scanParams():\n    base_url = \"https:\/\/localhost:5000\/v1\/api\/\"\n    endpoint = \"iserver\/scanner\/params\"\n\n    params_req = requests.get(url=base_url+endpoint, verify=False)\n    params_json = json.dumps(params_req.json(), indent=2)\n\n    paramFiles = open(\".\/scannerParams.xml\", \"w\")\n    \n    for i in params_json:\n        paramFiles.write(i)\n\n    paramFiles.close()\n\n    print(params_req.status_code)\n\nif __name__ == \"__main__\":\n    scanParams()<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-code-snippets-marketscanner-py\"><strong>Code Snippets<\/strong> &#8211; marketScanner<strong>.py<\/strong><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Library Imports\nimport requests\nimport urllib3\nimport json\n\n# Ignore insecure error messages\nurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n\ndef reqIserverScanner():\n    base_url = \"https:\/\/localhost:5000\/v1\/api\/\"\n    endpoint = \"iserver\/scanner\/run\"\n\n    scan_body = {\n        \"instrument\": \"STK\",\n        \"location\": \"STK.US.MAJOR\",\n        \"type\": \"TOP_PERC_GAIN\",\n        \"filter\": [\n            {\n                \"code\":\"priceAbove\",\n                \"value\":101\n            },\n            {\n                \"code\":\"priceBelow\",\n                \"value\":110\n            }\n        ]\n    }\n\n    scan_req = requests.post(url=base_url+endpoint, verify=False, json=scan_body)\n    scan_json = json.dumps(scan_req.json(), indent=2)\n\n    print(scan_req.status_code)\n    print(scan_json)\n    \nif __name__ == \"__main__\":\n    reqIserverScanner()<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>This lesson will discuss market scanners in the client portal API. We will go into detail on requesting scanner parameters, how to review those parameter details, and then how to create a final market scanner request.<\/p>\n","protected":false},"author":850,"featured_media":193974,"parent":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"contributors-categories":[13576],"traders-academy":[13126,13128,13132],"class_list":{"0":"post-193973","1":"trading-lessons","2":"type-trading-lessons","3":"status-publish","4":"has-post-thumbnail","6":"contributors-categories-interactive-brokers","7":"traders-academy-intermediate-trading","8":"traders-academy-level","9":"traders-academy-trading-lesson"},"pp_statuses_selecting_workflow":false,"pp_workflow_action":"current","pp_status_selection":"publish","acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Archives | Traders&#039; Academy | IBKR Campus<\/title>\n<meta name=\"description\" content=\"This lesson will discuss market scanners in the client portal API. We will go into detail on requesting scanner parameters, how to review those...\" \/>\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.interactivebrokers.com\/campus\/wp-json\/wp\/v2\/trading-lessons\/193973\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Market Scanners | IBKR Campus US\" \/>\n<meta property=\"og:description\" content=\"This lesson will discuss market scanners in the client portal API. We will go into detail on requesting scanner parameters, how to review those parameter details, and then how to create a final market scanner request.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.interactivebrokers.com\/campus\/trading-lessons\/market-scanners\/\" \/>\n<meta property=\"og:site_name\" content=\"IBKR Campus US\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-03T18:17:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/07\/cp-api8-2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\n\t    \"@context\": \"https:\\\/\\\/schema.org\",\n\t    \"@graph\": [\n\t        {\n\t            \"@type\": \"WebPage\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/trading-lessons\\\/market-scanners\\\/\",\n\t            \"url\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/trading-lessons\\\/market-scanners\\\/\",\n\t            \"name\": \"Market Scanners | IBKR Campus US\",\n\t            \"isPartOf\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#website\"\n\t            },\n\t            \"primaryImageOfPage\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/trading-lessons\\\/market-scanners\\\/#primaryimage\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/trading-lessons\\\/market-scanners\\\/#primaryimage\"\n\t            },\n\t            \"thumbnailUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/07\\\/cp-api8-2.jpg\",\n\t            \"datePublished\": \"2023-07-25T16:44:56+00:00\",\n\t            \"dateModified\": \"2025-10-03T18:17:48+00:00\",\n\t            \"description\": \"This lesson will discuss market scanners in the client portal API. We will go into detail on requesting scanner parameters, how to review those parameter details, and then how to create a final market scanner request.\",\n\t            \"breadcrumb\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/trading-lessons\\\/market-scanners\\\/#breadcrumb\"\n\t            },\n\t            \"inLanguage\": \"en-US\",\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"ReadAction\",\n\t                    \"target\": [\n\t                        \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/trading-lessons\\\/market-scanners\\\/\"\n\t                    ]\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"ImageObject\",\n\t            \"inLanguage\": \"en-US\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/trading-lessons\\\/market-scanners\\\/#primaryimage\",\n\t            \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/07\\\/cp-api8-2.jpg\",\n\t            \"contentUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/07\\\/cp-api8-2.jpg\",\n\t            \"width\": 1920,\n\t            \"height\": 1080\n\t        },\n\t        {\n\t            \"@type\": \"BreadcrumbList\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/trading-lessons\\\/market-scanners\\\/#breadcrumb\",\n\t            \"itemListElement\": [\n\t                {\n\t                    \"@type\": \"ListItem\",\n\t                    \"position\": 1,\n\t                    \"name\": \"Academy Lessons\",\n\t                    \"item\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/trading-lessons\\\/\"\n\t                },\n\t                {\n\t                    \"@type\": \"ListItem\",\n\t                    \"position\": 2,\n\t                    \"name\": \"Market Scanners\"\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"WebSite\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#website\",\n\t            \"url\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/\",\n\t            \"name\": \"IBKR Campus US\",\n\t            \"description\": \"Financial Education from Interactive Brokers\",\n\t            \"publisher\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#organization\"\n\t            },\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"SearchAction\",\n\t                    \"target\": {\n\t                        \"@type\": \"EntryPoint\",\n\t                        \"urlTemplate\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/?s={search_term_string}\"\n\t                    },\n\t                    \"query-input\": {\n\t                        \"@type\": \"PropertyValueSpecification\",\n\t                        \"valueRequired\": true,\n\t                        \"valueName\": \"search_term_string\"\n\t                    }\n\t                }\n\t            ],\n\t            \"inLanguage\": \"en-US\"\n\t        },\n\t        {\n\t            \"@type\": \"Organization\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#organization\",\n\t            \"name\": \"Interactive Brokers\",\n\t            \"alternateName\": \"IBKR\",\n\t            \"url\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/\",\n\t            \"logo\": {\n\t                \"@type\": \"ImageObject\",\n\t                \"inLanguage\": \"en-US\",\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/logo\\\/image\\\/\",\n\t                \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2024\\\/05\\\/ibkr-campus-logo.jpg\",\n\t                \"contentUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2024\\\/05\\\/ibkr-campus-logo.jpg\",\n\t                \"width\": 669,\n\t                \"height\": 669,\n\t                \"caption\": \"Interactive Brokers\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/logo\\\/image\\\/\"\n\t            },\n\t            \"publishingPrinciples\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/about-ibkr-campus\\\/\",\n\t            \"ethicsPolicy\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/cyber-security-notice\\\/\"\n\t        }\n\t    ]\n\t}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Archives | Traders' Academy | IBKR Campus","description":"This lesson will discuss market scanners in the client portal API. We will go into detail on requesting scanner parameters, how to review those...","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.interactivebrokers.com\/campus\/wp-json\/wp\/v2\/trading-lessons\/193973\/","og_locale":"en_US","og_type":"article","og_title":"Market Scanners | IBKR Campus US","og_description":"This lesson will discuss market scanners in the client portal API. We will go into detail on requesting scanner parameters, how to review those parameter details, and then how to create a final market scanner request.","og_url":"https:\/\/www.interactivebrokers.com\/campus\/trading-lessons\/market-scanners\/","og_site_name":"IBKR Campus US","article_modified_time":"2025-10-03T18:17:48+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/07\/cp-api8-2.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/ibkrcampus.com\/campus\/trading-lessons\/market-scanners\/","url":"https:\/\/ibkrcampus.com\/campus\/trading-lessons\/market-scanners\/","name":"Market Scanners | IBKR Campus US","isPartOf":{"@id":"https:\/\/ibkrcampus.com\/campus\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ibkrcampus.com\/campus\/trading-lessons\/market-scanners\/#primaryimage"},"image":{"@id":"https:\/\/ibkrcampus.com\/campus\/trading-lessons\/market-scanners\/#primaryimage"},"thumbnailUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/07\/cp-api8-2.jpg","datePublished":"2023-07-25T16:44:56+00:00","dateModified":"2025-10-03T18:17:48+00:00","description":"This lesson will discuss market scanners in the client portal API. We will go into detail on requesting scanner parameters, how to review those parameter details, and then how to create a final market scanner request.","breadcrumb":{"@id":"https:\/\/ibkrcampus.com\/campus\/trading-lessons\/market-scanners\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ibkrcampus.com\/campus\/trading-lessons\/market-scanners\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ibkrcampus.com\/campus\/trading-lessons\/market-scanners\/#primaryimage","url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/07\/cp-api8-2.jpg","contentUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/07\/cp-api8-2.jpg","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/ibkrcampus.com\/campus\/trading-lessons\/market-scanners\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Academy Lessons","item":"https:\/\/ibkrcampus.com\/campus\/trading-lessons\/"},{"@type":"ListItem","position":2,"name":"Market Scanners"}]},{"@type":"WebSite","@id":"https:\/\/ibkrcampus.com\/campus\/#website","url":"https:\/\/ibkrcampus.com\/campus\/","name":"IBKR Campus US","description":"Financial Education from Interactive Brokers","publisher":{"@id":"https:\/\/ibkrcampus.com\/campus\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ibkrcampus.com\/campus\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ibkrcampus.com\/campus\/#organization","name":"Interactive Brokers","alternateName":"IBKR","url":"https:\/\/ibkrcampus.com\/campus\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/logo\/image\/","url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2024\/05\/ibkr-campus-logo.jpg","contentUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2024\/05\/ibkr-campus-logo.jpg","width":669,"height":669,"caption":"Interactive Brokers"},"image":{"@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/logo\/image\/"},"publishingPrinciples":"https:\/\/www.interactivebrokers.com\/campus\/about-ibkr-campus\/","ethicsPolicy":"https:\/\/www.interactivebrokers.com\/campus\/cyber-security-notice\/"}]}},"_links":{"self":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/trading-lessons\/193973","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/trading-lessons"}],"about":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/types\/trading-lessons"}],"author":[{"embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/users\/850"}],"replies":[{"embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/comments?post=193973"}],"version-history":[{"count":0,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/trading-lessons\/193973\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/media\/193974"}],"wp:attachment":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/media?parent=193973"}],"wp:term":[{"taxonomy":"contributors-categories","embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/contributors-categories?post=193973"},{"taxonomy":"traders-academy","embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/traders-academy?post=193973"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}