Skip to content
Live news Screener Coverage Pricing Docs REST API WebSocket API MCP server Company Use cases Blog Changelog Status Compare Contact
OXSQ$1.31-0.02(-1.62%)Oxford Square Capital Corp. Schedules Third Quarter 2026 Earnings Release and Conference Call for October 30, 2026[4:37:45 PM ET]CSV$35.41-1.57(-4.25%)Carriage Services Announces 2026 Third Quarter Earnings Release and Conference Call Schedule[4:31:58 PM ET]GD$349.36-1.43(-0.41%)Amy Johnson Appointed President of GDIT General Dynamics (NYSE:GD) announced today that Amy Johnson has been appointed as president of GDIT, effective November 3. Johnson is a 27-year...[4:30:00 PM ET]ACRE$3.35+0.09(+2.76%)Ares Commercial Real Estate Corporation Schedules Earnings Release and Conference Call for the Third Quarter Ended September 30, 2026 Ares Commercial Real Estate Corporation (NYSE: ACRE) announced today that it will report earnings for the third quarter ended September 30, 2026 on...[4:30:00 PM ET]ESOA$9.26+0.12(+1.31%)ENERGY SERVICES OF AMERICA COMPLETES FAMCO ACQUISITION Energy Services of America Corporation (the "Company" or "Energy Services") (Nasdaq: ESOA) today announced that its subsidiary, FAMCO Acquisition,...[4:30:00 PM ET]AVTGF$0.240.00(0.00%)Avanti Gold Announces Results of Annual General and Special Meeting[4:30:00 PM ET]AWK$142.75-0.48(-0.34%)California American Water Submits Monterey Desalination Project Financing and Cost Updates to the California Public Utilities Commission Today, California American Water submitted an application to the California Public Utilities Commission (CPUC) updating the project cost estimates, a ...[4:21:00 PM ET]PBT$33.68+0.41(+1.23%)PERMIAN BASIN ROYALTY TRUST ANNOUNCES RECORD DATE AND MEETING DATE FOR SPECIAL MEETING TO CONSIDER SOFTVEST PROPOSALS Argent Trust Company, as trustee ("Trustee") of the Permian Basin Royalty Trust (NYSE: PBT) ("Permian" or the "Trust"), today announced that it has...[4:20:00 PM ET]MMT$4.15-0.05(-1.19%)Aberdeen Multi-Market Income Fund (MMT) Announces Upcoming 1-for-4 Reverse Stock Split The Board of Trustees of Aberdeen Multi-Market Income Fund (NYSE: MMT) has approved a 1-for-4 reverse stock split of the Fund's issued and...[4:17:00 PM ET]FICO$749.00-74.27(-9.02%)FICO Holds Mortgage Score Pricing at $10 for Lenders Enrolled in Preferred Program[4:15:00 PM ET]CIVB$28.29+0.14(+0.50%)Civista Bancshares, Inc. Appoints Jeremy Normington-Slay to Board of Directors Civista Bancshares, Inc. (NASDAQ: CIVB) ("Civista") today announced the appointment of Jeremy Normington-Slay, DPT, MBA, FACHE, to the Boards of...[4:15:00 PM ET]NKTR$37.22-1.43(-3.70%)Nektar Therapeutics Reports Inducement Grants Under Nasdaq Listing Rule 5635(c)(4) Nektar Therapeutics (NASDAQ: NKTR) today announced that, on October 20, 2026, the Organization and Compensation Committee of Nektar's Board of...[4:15:00 PM ET]YMAT$2.14+0.22(+11.45%)J-Star Holding Co., Ltd. Files Interim Financial Report on Form 6-K[4:15:00 PM ET]MFI$8.390.00(0.00%)mF International to Wind Down Legacy Financial Trading Business, Shift Focus Completely to Digital Asset Strategy mF International Limited (NASDAQ:MFI) ("mF International" or the "Company") today announced that its Board of Directors has approved the wind-down...[4:15:00 PM ET]DTCFF$0.28-0.02(-5.28%)Defence Therapeutics Announces Convertible Debenture Interest Payment[4:15:00 PM ET]NKE$37.37-0.95(-2.48%)NIKE, Inc. Announces 2026 Investor Day Webcast[4:15:00 PM ET]
Getting started

Pagination

View as markdown

List endpoints use cursor pagination, which stays consistent while new articles keep arriving.

How it works

  1. Make a request with limit (1–100, default 20).
  2. If meta.next_cursor is not null, there are more results.
  3. Repeat the request with the same filters plus cursor=<next_cursor>.

Cursors encode the position of the last item, so new articles published while you page don't shift or duplicate results. Cursors don't expire, but they only work with the filters they were created with.

Example: walk every page

import os

import requests

URL = "https://api.marketnewsapi.com/v1/news"
HEADERS = {"Authorization": f"Bearer {os.environ['MARKETNEWSAPI_KEY']}"}
params = {"tickers": "NVDA", "from": "2026-09-01", "to": "2026-09-30", "limit": 100}

articles = []
while True:
    page = requests.get(URL, headers=HEADERS, params=params, timeout=10).json()
    articles += page["data"]
    if not page["meta"]["next_cursor"]:
        break
    params["cursor"] = page["meta"]["next_cursor"]

print(len(articles), "articles")

Backfilling large ranges

For big historical pulls, split the range into days or weeks and fetch them in parallel (stay under 20 requests per second). Use sort=published_asc if you want to process oldest first.

Polling for new articles

To poll for news since your last check, don't page backwards. Pass from set to the newest published_at you've seen, with sort=published_asc, and de-duplicate by id.