SEC Filings And Earnings Transcripts collector facts

Publisher: bo-05 (@bo-05).

Version: 1. Last updated: 2026-07-03T08:01:40.189Z.

Run this collector on demand, as an API endpoint, or on a schedule with Firecrawl Prometheus.

Sample fields: cik, notes, ticker, mda_text, form_type, confidence, filing_date, collected_at, company_name, document_url, other_tables, rows.

Parameters: query (string, required), source-types (string, required), form-types (string, required), max-documents (number, required), output-mode (string, required), date-range (string), include-tables (boolean), include-risk-factors (boolean), include-mda (boolean), include-financial-statements (boolean), language (string), snapshot-label (string), sort-hint (string).

SEC Filings And Earnings Transcripts

v1Published

Recent SEC filing rows and public earnings transcript rows with metadata, section text, tables, evidence URLs, and snapshot fields.

Output & API

Preview the latest data, download it, or call this collector as an API.

Author's sample data
#ciknotestickermda_textform_typeconfidencefiling_datecollected_atcompany_namedocument_urlother_tablestracking_keydocument_typespeaker_turnsdocument_titlesnapshot_labelsource_page_urltranscript_datetranscript_textaccession_numberperiod_of_reporttranscript_titlerisk_factors_textsecondary_source_urlsbusiness_overview_textfinancial_statement_tables
00001045810NVDAItem 2. Management's Discussion and Analysis of Financial Condition and Results of OperationsForward-Looking StatementsThis Quarterly Report on Form 10-Q contains forward-looking statements within the meaning of Section 27A of the Securities Act of 1933, as amended, and Section 21E of the Securities Exchange Act of 1934, as amended, which are subject to the “safe harbor” created by those sections based on management’s beliefs and assumptions and on information currently available to management. In some cases, you can identify forward-looking statements by terms such as “may,” “will,” “should,” “could,” “goal,” “would,” “expect,” “plan,” “anticipate,” “believe,” “estimate,” “project,” “predict,” “potential” and similar expressions intended to identify forward-looking statements. These statements involve known and unknown risks, uncertainties and other factors, which may cause our actual results, performance, time frames or achievements to be materially different from any future results, performance, time frames or achievements expressed or implied by the forward-looking statements. We discuss many of these risks, uncertainties and other factors in this Quarterly Report on Form 10-Q and our Annual Report on Form 10-K for the fiscal year ended January 25, 2026 in greater detail under the heading “Risk Factors” of such reports. Given these risks, uncertainties, and other factors, you should not place undue reliance on these forward-looking statements. Also, these forward-looking statements represent our estimates and assumptions only as of the date of this filing. You should read this Quarterly Report on Form 10-Q completely and understand that our actual future results may be materially different from what we expect. We hereby qualify our forward-looking statements by these cautionary statements. Except as required by law, we assume no obligation to update these forward-looking statements publicly, or to update the reasons actual results could differ materially from those anticipated in these forward-looking statements, even if new information becomes available in the future.All references to “NVIDIA,” “we,” “us,” “our” or the “Company” mean NVIDIA Corporation and its subsidiaries.In addition, statements that “we believe” and similar statements reflect our beliefs and opinions on the relevant subject. These statements are based upon information available to us as of the filing date of this Quarterly Report on Form 10-Q, and while we believe such information forms a reasonable basis for such statements, such information may be limited or incomplete, and our statements should not be read to indicate that we have conducted an exhaustive inquiry into, or review of, all potentially available relevant information. These statements are inherently uncertain, and investors are cautioned not to unduly rely upon these statements.© 2026 NVIDIA Corporation. All rights reserved.The following discussion and analysis of our financial condition and results of operations should be read in conjunction with the risk factors set forth in Item 1A. “Risk Factors” of our Annual Report on Form 10-K for the fiscal year ended January 25, 2026 and Part II, Item 1A. “Risk Factors” of this Quarterly Report on Form 10-Q and our Condensed Consolidated Financial Statements and related Notes thereto, as well as other cautionary statements and risks described elsewhere in this Quarterly Report on Form 10-Q and our other filings with the SEC, before deciding to purchase, hold, or sell shares of our common stock.OverviewOur Company and Our BusinessesNVIDIA pioneered accelerated computing to help solve the most challenging computational problems. Since our original focus on PC graphics, we have expanded to several other large and important computationally intensive fields. Fueled by the sustained demand for exceptional 3D graphics and the scale of the gaming market, NVIDIA has leveraged its GPU architecture to create platforms for scientific computing, AI, data science, autonomous vehicles, robotics, and digital twin applications. NVIDIA is now a data center-scale AI infrastructure company reshaping all industries.Our two operating segments are “Compute & Networking” and “Graphics.” Refer to Note 13 of the Notes to Condensed Consolidated Financial Statements in Part I, Item 1 of this Quarterly Report on Form 10-Q for additional information.Headquartered in Santa Clara, California, NVIDIA was incorporated in California in April 1993 and reincorporated in Delaware in April 1998.Recent Developments, Future Objectives and ChallengesRevenue growth in the first quarter was driven by data center products for accelerated computing and AI solutions. Blackwell continued to account for the majority of our system shipments.The availability of data centers, energy, and capital to support the buildout of NVIDIA AI infrastructure by our customers and partners is crucial, and any shortage of these or other necessary resources could impact our future revenue and financial performance. Expanding energy capacity to meet demand is a complex, multi-year process that involves significant regulatory, technical, and construction challenges. In addition, access to capital can be particularly constrained for less-capitalized companies, which may face difficulties securing financing for large-scale infrastructure projects. These limitations could delay customer and partner deployments or reduce the scale of accelerated computing and AI adoption.23We expect our Rubin platform to start shipping in the second half of fiscal year 2027. The complexity of bringing up our product architecture and sophisticated system configurations has caused and may in the future cause delays in production and create challenges in managing supply and demand. This could further result in revenue volatility, quality issues, increased inventory provisions, decreases in product yields and higher material costs, and/or increased warranty costs. Customers may postpone purchasing new architectures or may adopt new technologies more gradually than anticipated, affecting our revenue timing and supply chain expenses. Beginning in February 2026, the U.S. government, or USG, granted licenses that allow us to ship small amounts of H200 products to specific China-based customers. To date, we have not generated any revenue under the H200 licensing program, and do not yet know whether any imports will be allowed into China. The license requires that the H200s go through an inspection process in the United States prior to any shipment to the customer. As a result, any H200 shipped under the new licensing program will be subject to a 25% tariff upon importation into the United States.The recent rise in high-quality, open-source foundation models is making advanced AI capabilities broadly accessible. Open-source AI is dependent on developer adoption, and if deployed on our competitors’ platforms, it could reduce demand for our products and services.We have made, and expect to continue making, investments in our ecosystem to enhance our growth opportunities, cultivate our ecosystem, and strengthen our competitive position. In the first quarter of fiscal year 2027, we made the following investments:•$18.6 billion in private companies and infrastructure funds. Some of these investments include AI model makers that may indirectly purchase or use our products in the cloud. •We made investments in publicly-held equity securities where the value may fluctuate significantly and could adversely affect our financial results.Our global supply chain for our networking products, including our Israel operations of approximately 5,900 employees supporting research and development, operations, and sales and marketing, has not been significantly impacted by the conflict in the Middle East. If the conflict escalates or extends, it could affect future product development, supply chain, and revenue, and create business uncertainty.Macroeconomic factors, including tariffs, inflation, interest changes, capital market volatility, global supply chain constraints, and global economic and geopolitical developments and conflicts, have direct and indirect impacts on our results of operations, particularly demand for our products. While difficult to isolate and quantify, these macroeconomic factors impact our supply chain and manufacturing costs, employee wages, costs for capital equipment, the value of our investments, revenue, and competitive position. Our product and solution pricing generally does not fluctuate with short-term changes in our costs. Within our supply chain, we continuously manage product availability and costs with our vendors.Refer to Part II, Item 1A, "Risk Factors" for a discussion of these factors and other risks.First Quarter of Fiscal Year 2027 SummaryThree Months EndedQuarter-over-Quarter ChangeYear-over-Year Change Apr 26, 2026Jan 25, 2026Apr 27, 2025($ in millions, except per share data)Revenue$81,615 $68,127 $44,062 20 %85 %Gross margin74.9 %75.0 %60.5 %(0.1) pts14.4 ptsOperating expenses$7,621 $6,794 $5,030 12 %52 %Operating income$53,536 $44,299 $21,638 21 %147 %Net income$58,321 $42,960 $18,775 36 %211 %Net income per diluted share$2.39 $1.76 $0.76 36 %214 %We specialize in markets where our computing platforms can provide tremendous acceleration for applications. These platforms incorporate processors, interconnects, software, algorithms, systems, and services to deliver unique value. Following the rapid evolution in our businesses, we are transitioning to a new reporting framework that better reflects our current and future growth drivers. We will have two market platforms – Data Center and Edge Computing.Within Data Center, we will report two sub-markets, Hyperscale and ACIE which incorporates AI Clouds, Industrial, and Enterprise. Hyperscale will include revenue from the public clouds and the world’s largest consumer internet companies, 24while ACIE addresses our growth opportunity in diverse AI purpose-built data centers and AI factories across industries and countries.Edge Computing highlights devices for agentic and physical AI including PCs, game consoles, workstations, AI-RAN base stations, robotics and automotive.Three Months EndedQuarter-over-Quarter ChangeYear-over-Year Change Apr 26, 2026Jan 25, 2026Apr 27, 2025($ in millions)Revenue by Market Platform (1)Data Center$75,246 $62,314 $39,112 21 %92 %Hyperscale37,869 33,814 17,599 12 %115 %AI Clouds, Industrial, & Enterprise37,377 28,500 21,513 31 %74 %Edge Computing6,369 5,813 4,950 10 %29 %Total revenue$81,615 $68,127 $44,062 20 %85 %(1) In the first quarter of fiscal year 2027, we changed our presentation of revenue by market platform and the comparable periods have been recast.Revenue was $81.6 billion, up 85% from a year ago and up 20% sequentially.Data Center revenue was $75.2 billion, up 92% from a year ago and up 21% sequentially, driven by the ramp of our Blackwell 300 products and demand for our InfiniBand, Spectrum-X Ethernet, and NVLink solutions. Hyperscaler revenue increased sequentially and remained at approximately 50% of Data Center revenue, while the remaining 50% came from a continued diversification of customers, including AI Clouds, industrial, enterprise, and sovereign customers. No shipments of Data Center Hopper products to China occurred during the quarter, compared with $4.6 billion in the first quarter of fiscal year 2026.Edge Computing revenue for the first quarter was $6.4 billion, up 29% from a year ago and up 10% sequentially. The increases were driven by robust Blackwell workstation demand, partially offset by slower consumer PC demand that was tempered by elevated memory and systems prices.Gross margin increased from a year ago on lower inventory provisions, primarily due to the prior year's $4.5 billion charge associated with H20 excess inventory and purchase obligations. Gross margin was approximately flat sequentially as our Blackwell architecture remains the majority of our revenue.Operating expenses were up 52% from a year ago and up 12% sequentially. The increases were primarily driven by higher compensation and benefits expense due to employee growth and compensation increases, compute and infrastructure costs, and engineering development materials for new product developments.Financial Information by Business Segment and Geographic DataRefer to Note 13 of the Notes to the Condensed Consolidated Financial Statements for disclosure regarding segment information.Critical Accounting Policies and EstimatesRefer to Part II, Item 7, "Critical Accounting Policies and Estimates" of our Annual Report on Form 10-K for the fiscal year ended January 25, 2026. There have been no material changes to our Critical Accounting Policies and Estimates. 25Results of OperationsThe following table sets forth, for the periods indicated, certain items in our Condensed Consolidated Statements of Income expressed as a percentage of revenue. Three Months Ended Apr 26, 2026Apr 27, 2025Revenue100.0 %100.0 %Cost of revenue25.1 39.5 Gross profit74.9 60.5 Operating expensesResearch and development7.7 9.1 Sales, general and administrative1.6 2.4 Total operating expenses9.3 11.5 Operating income65.6 49.0 Interest income0.7 1.2 Interest expense(0.1)(0.1)Other income (expense), net19.5 (0.4)Total other income, net20.1 0.7 Income before income tax85.7 49.7 Income tax expense14.2 7.1 Net income71.5 %42.6 %Reportable SegmentsRevenue by Reportable SegmentsThree Months Ended Apr 26, 2026Apr 27, 2025$Change%Change ($ in millions)Compute & Networking$74,550 $39,589 $34,961 88 %Graphics7,065 4,473 2,592 58 %Total$81,615 $44,062 $37,553 85 %Operating Income by Reportable SegmentsThree Months Ended Apr 26, 2026Apr 27, 2025$Change%Change ($ in millions)Compute & Networking$53,335 $22,054 $31,281 142 %Graphics2,941 1,640 1,301 79 %Total$56,276 $23,694 $32,582 138 %Compute & Networking revenue – The year-over-year increase in the first quarter of fiscal year 2027 was due to growth in [truncated]10-Q0.862026-05-202026-07-03T06:21:21.043ZNVIDIA CORPhttps://www.sec.gov/Archives/edgar/data/1045810/000104581026000052/nvda-20260426.htm:0001045810:0001045810-26-000052sec_filingnull10-Qhttps://www.sec.gov/Archives/edgar/data/1045810/000104581026000052/0001045810-26-000052-index.htmlnullnull0001045810-26-0000522026-04-26nullItem 1A. Risk Factors for additional information regarding our investments.Unrecognized tax benefits were $4.5 billion, which includes related interest and penalties of $439 million, and were recorded in non-current income tax payable as of April 26, 2026. We are unable to estimate the timing of any potential tax liability, interest payments, or penalties in individual years due to uncertainties in the underlying income tax positions and the timing of the effective settlement of such tax positions. We are currently under examination by the Internal Revenue Service for our fiscal years 2023 and 2024. Refer to Note 11 of the Notes to Condensed Consolidated Financial Statements in Part I, Item 1 of this Quarterly Report on Form 10-Q.Other than the contractual obligations described in Notes 6 and 10, there were no material changes outside the ordinary course of business in our contractual obligations from those disclosed in our Annual Report on Form 10-K for the fiscal year ended January 25, 2026. Refer to Item 7, “Management’s Discussion and Analysis of Financial Condition and Results of Operations - Liquidity and Capital Resources” in our Annual Report on Form 10-K for the fiscal year ended January 25, 2026 for a description of our contractual obligations. For a description of our facility lease guarantees, long-term debt, purchase obligations, and operating lease obligations, refer to Notes 8, 9, 10, and 14 of the Notes to the Condensed Consolidated Financial Statements in Part I, Item 1 of this Quarterly Report on Form 10-Q, respectively.Adoption of New and Recently Issued Accounting PronouncementsThere has been no adoption of any new and recently issued accounting pronouncements.Item 3. Quantitative and Qualitative Disclosures About Market RiskInvestment and Interest Rate RiskFinancial market risks related to investment and interest rate risk are described in Part II, Item 7A, “Quantitative and Qualitative Disclosures About Market Risk” in our Annual Report on Form 10-K for the fiscal year ended January 25, 2026. Our marketable equity securities consist of publicly-held equity securities, while our non-marketable equity securities are investments in privately-held companies. Publicly-held equity securities are subject to market price volatility. A hypothetical 10% decrease in our publicly-held equity securities would decrease the fair value of the publicly-held equity securities balance by $3.9 billion and $1.8 billion as of April 26, 2026 and January 25, 2026, respectively.Non-marketable equity securities are measured based on cost minus impairment, if any, and are adjusted for observable price changes in orderly transactions for an identical or similar investment in the same issuer. Valuations of our non-30marketable equity securities are inherently complex due to the lack of readily available market data and observable transactions, and impact of macroeconomic factors.For a description of our equity investments, refer to Notes 5 and 6 of the Notes to Condensed Consolidated Financial Statements in Part I, Item 1 of this Quarterly Report on Form 10-Q, respectively.Foreign Exchange Rate RiskThe impact of foreign currency transactions related to foreign exchange rate risk is described in Part II, Item 7A, “Quantitative and Qualitative Disclosures About Market Risk” in our Annual Report on Form 10-K for the fiscal year ended January 25, 2026. As of April 26, 2026, there have been no material changes to the foreign exchange rate risks described as of January 25, 2026.Item 4. Controls and ProceduresControls and ProceduresDisclosure Controls and ProceduresBased on their evaluation as of April 26, 2026, our management, including our Chief Executive Officer and Chief Financial Officer, has concluded that our disclosure controls and procedures (as defined in Rule 13a-15(e) under the Exchange Act) were effective to provide reasonable assurance that the information we are required to disclose in reports that we file or submit under the Exchange Act is recorded, processed, summarized and reported within the time periods specified in the SEC rules and forms, and that such information is accumulated and communicated to our management, including our Chief Executive Officer and our Chief Financial Officer, as appropriate, to allow timely decisions regarding required disclosures.Changes in Internal Control Over Financial ReportingThere have been no changes in our internal control over financial reporting during the first quarter of fiscal year 2027 that have materially affected, or are reasonably likely to materially affect, our internal control over financial reporting. We are continuing a phased upgrade of our enterprise resource planning, or ERP, system to update our existing core financial systems. The ERP system is designed to accurately maintain our financial records used to report operating results. We will continue to evaluate each quarter whether there are changes that materially affect our internal control over financial reporting.Inherent Limitations on Effectiveness of ControlsOur management, including our Chief Executive Officer and Chief Financial Officer, does not expect that our disclosure controls and procedures, or our internal controls, will prevent all error and all fraud. A control system, no matter how well conceived and operated, can provide only reasonable, not absolute, assurance that the objectives of the control system are met. Further, the design of a control system must reflect the fact that there are resource constraints, and the benefits of controls must be considered relative to their costs. Because of the inherent limitations in all control systems, no evaluation of controls can provide absolute assurance that all control issues and instances of fraud, if any, within NVIDIA have been detected.Part II. Other InformationItem 1. Legal ProceedingsRefer to Part I, Item 1, Note 10 of the Notes to the Condensed Consolidated Financial Statements for a discussion of significant developments in our legal proceedings since January 25, 2026. Item 1A. Risk FactorsOther than the risk factors listed below, there have been no material changes from the risk factors previously described under Item 1A of our Annual Report on Form 10-K for the fiscal year ended January 25, 2026.Purchasing or owning NVIDIA common stock involves investment risks including, but not limited to, the risks described in Item 1A of our Annual Report on Form 10-K for the fiscal year ended January 25, 2026, and below. Any one of those risks could harm our business, financial condition and results of operations or reputation, which could cause our stock price to decline. Additional risks, trends and uncertainties not presently known to us or that we currently believe are immaterial may also harm our business, financial condition, results of operations or reputation.Competition could adversely impact our market share and financial results.Our target markets remain competitive, and competition may intensify with expanding and changing product and service offerings, industry standards, customer and market needs, new entrants and consolidations. Other companies compete 31with us on a wide range of parameters including price, total cost of ownership, and performance, which has resulted and may in the future result in lower-than-expected selling prices or demand for our products. Some of our competitors operate their own fabrication facilities, and have longer operating histories, larger customer bases, more comprehensive IP portfolios and patent protections, more design wins, and greater financial, sales, marketing and distribution resources than we do. These competitors may be able to acquire market share and/or prevent us from doing so, more effectively identify and capitalize upon opportunities in new markets and end-user trends, more quickly transition their products, and impinge on our ability to procure sufficient foundry capacity and scarce input materials during a supply-constrained environment, which could harm our business. Some of our customers are developing their own ASICs and other products, including designs optimized for certain workloads that may not require all of the features and functionality our data center systems provide. Others may offer cloud-based services that compete with our AI cloud service offerings, and we may not be able to establish market share sufficient to achieve the scale necessary to meet our business objectives. If we are unable to successfully compete in this environment, demand for our products, services, and technologies could decrease, which may negatively impact our business.Long manufacturing lead times and uncertain supply and capacity availability, combined with a failure to estimate customer demand accurately, has led and could in the future lead to mismatches between supply and demand.We have long manufacturing lead times and build finished products and maintain inventory in advance of anticipated demand. In periods of shortages impacting the semiconductor industry and/or limited supply or capacity in our supply chain, the lead times for certain supply may be extended. We have previously experienced and may continue to experience extended lead times of more than 12 months. To secure future supply and capacity, we have paid premiums, provided deposits, and entered into long-term supply agreements and capacity commitments, which have increased our product costs and this may continue. We may still be unable to secure sufficient commitments for capacity to address our business needs.If we inaccurately estimate demand, or our customers change orders, as we have experienced in the past, we may not be able to reduce our supply commitments in time, at the same rate, or at all. Significant mismatches between supply and demand have varied across our market platforms, resulted in both product shortages and excess inventory, significantly harmed our financial results and could reoccur. If we underestimate demand, and our foundry partners and contract manufacturers are unable to increase production or provide sufficient supply, we may not be able to meet increased customer demand in a timely manner, or at all. Our reputation and customer relationships could be damaged and we could lose revenue and market share. Additionally, since some of our products are part of a complex data center buildout, supply constraints or availability issues with respect to any one component have had and may have a broader revenue impact. For example, our ability to sell certain products has been and could be impeded if components necessary for the finished products are not available from third parties.If we overestimate demand, or if customers cancel or defer orders or choose to purchase from our competitors, we may not be able to utilize on-hand inventory or reduce purchase commitments accordingly. We have had to reduce average selling prices, including due to our channel pricing programs, increase prices for certain of our products as a result of our suppliers’ increase in prices, write down our inventory, incur cancellation penalties, and record impairments, and may have to do so in the future. The impact of these risks would be amplified by our non-cancellable and non-returnable purchase orders placed in advance of our historical lead times and could be exacerbated if we need to make changes to the design of future products. These risks have increased and may continue to increase as our purchase obligations and prepaids have grown and are expected to continue to grow and become a greater portion of our total supply. All of these factors may negatively impact our gross margins and financial results.Factors that have caused and/or could in the future cause us to underestimate or overestimate demand, and impact the timing and volume of our revenue, include:•changes in product development cycles and time to market;•competing technologies and competitor product releases, announcements or other actions;•changes in business and economic conditions;•sudden or sustained government lockdowns or public health issues;•rapidly changing technology or customer requirements;•the availability of sufficient data center capacity or energy for customers to procure;•new product introductions and transitions resulting in less demand for existing products;•new or unexpected end-use cases;•increase in demand for competitive products;•changes in end-user demand;32•purchasing decisions made, and inventory levels held by, distributors, ODMs, OEMs, system integrators, other channel partners and other third parties;•the ability of developers, end customers and other third parties to build, enhance, and maintain accelerated computing applications that leverage our platforms;•the demand for accelerated computing, AI-related cloud services, or large language models;•changes that impact the ecosystem for the architectures underlying our products and technologies;•government actions or changes in governmental policies, such as export controls, increased restrictions on gaming usage, or tariffs;•our customers’ and partners’ ability to secure capital and energy and to build complex data center infrastructure timely; and•the availability of third-party content on our platforms, such as GeForce NOW.The availability of data centers, energy, and capital to support the buildout of NVIDIA AI infrastructure by our customers and partners is crucial, and any shortage of these and other necessary resources could impact our future revenue and financial performance. Expanding energy capacity to meet demand is a complex, multi-year process involving significant regulatory, technical, and construction challenges. In addition, access to capital can be particularly constrained for less-capitalized companies, which may face difficulties securing financing for large-scale infrastructure projects. These limitations could delay customer and partner deployments or reduce the scale of accelerated compu [truncated]null
10001045810NVDAnullnull0.74null2026-07-03T06:21:21.043ZNVIDIA CORPhttps://www.fool.com/earnings/call-transcripts/2026/05/20/nvidia-nvda-q1-2027-earnings-transcript/null:0001045810:https://www.fool.com/earnings/call-transcripts/2026/05/20/nvidia-nvda-q1-2027-earnings-transcript/earnings_transcriptNvidia (NVDA) Q1 2027 Earnings Transcripthttps://www.fool.com/earnings/call-transcripts/2026/05/20/nvidia-nvda-q1-2027-earnings-transcript/May 20 2026[Accessibility Menu](https://www.fool.com/earnings/call-transcripts/2026/05/20/nvidia-nvda-q1-2027-earnings-transcript/#) [▲ S&P 500 **+209%** \|▲ Stock Advisor **+903%** Join The Motley Fool](https://www.fool.com/mms/mark/e-foolcom-sa-top-nav-returns) [▲ S&P 500 **+209%** \|▲ Stock Advisor **+903%** Join The Motley Fool](https://api.fool.com/infotron/infotrack/click?apikey=35527423-a535-4519-a07f-20014582e03e&impression=17c42af4-3499-4f72-8d77-9a8cf355a188&url=https%3A%2F%2Fwww.fool.com%2Fmms%2Fmark%2Fe-foolcom-sa-top-nav-returns%3Faid%3D8867%26source%3Disaeditn0000028%26ftm_cam%3Dsa-bbn-evergreen%26ftm_veh%3Dfoolcom_supernav%26ftm_pit%3D14137) Search for a company [▲ S&P 500 **+209%** \|▲ Stock Advisor **+903%** Join The Motley Fool](https://api.fool.com/infotron/infotrack/click?apikey=35527423-a535-4519-a07f-20014582e03e&impression=17c42af4-3499-4f72-8d77-9a8cf355a188&url=https%3A%2F%2Fwww.fool.com%2Fmms%2Fmark%2Fe-foolcom-sa-top-nav-returns%3Faid%3D8867%26source%3Disaeditn0000028%26ftm_cam%3Dsa-bbn-evergreen%26ftm_veh%3Dfoolcom_supernav%26ftm_pit%3D14137) [Accessibility](https://www.fool.com/earnings/call-transcripts/2026/05/20/nvidia-nvda-q1-2027-earnings-transcript/#) Log In [Help](https://support.fool.com/) [Arrow-Thin-Down\\ \\ S&P 500\\ \\ 7,483.23\\ \\ -0.2%\\ \\ -16.13](https://www.fool.com/quote/snpindex/%5Egspc/) [Arrow-Thin-Down\\ \\ DJI\\ \\ 52,305.24\\ \\ -0.0%\\ \\ -13.96](https://www.fool.com/quote/djindices/%5Edji/) [Arrow-Thin-Down\\ \\ NASDAQ\\ \\ 26,040.03\\ \\ -0.7%\\ \\ -173.69](https://www.fool.com/quote/nasdaqindex/%5Eixic/) [Arrow-Thin-Down\\ \\ Bitcoin\\ \\ $60,347.00\\ \\ +2.6%\\ \\ +$1,521.32](https://www.fool.com/quote/crypto/btc/) [Arrow-Thin-Down\\ \\ SPCX\\ \\ $157.50\\ \\ -7.8%\\ \\ -$13.36](https://www.fool.com/quote/nasdaq/spcx/) [Arrow-Thin-Down\\ \\ AAPL\\ \\ $294.34\\ \\ +1.7%\\ \\ +$4.98](https://www.fool.com/quote/nasdaq/aapl/) [Arrow-Thin-Down\\ \\ AMZN\\ \\ $241.87\\ \\ +1.5%\\ \\ +$3.53](https://www.fool.com/quote/nasdaq/amzn/) [Arrow-Thin-Down\\ \\ GOOG\\ \\ $357.89\\ \\ +1.3%\\ \\ +$4.56](https://www.fool.com/quote/nasdaq/goog/) [Arrow-Thin-Down\\ \\ META\\ \\ $613.34\\ \\ +8.9%\\ \\ +$50.05](https://www.fool.com/quote/nasdaq/meta/) [Arrow-Thin-Down\\ \\ MSFT\\ \\ $384.03\\ \\ +3.0%\\ \\ +$11.01](https://www.fool.com/quote/nasdaq/msft/) [Arrow-Thin-Down\\ \\ NVDA\\ \\ $197.73\\ \\ -1.2%\\ \\ -$2.37](https://www.fool.com/quote/nasdaq/nvda/) [Arrow-Thin-Down\\ \\ TSLA\\ \\ $425.66\\ \\ +1.2%\\ \\ +$5.06](https://www.fool.com/quote/nasdaq/tsla/) arrow-leftarrow-right [Most Active Stocks](https://www.fool.com/markets/most-active-stocks/) [Daily Stock Gainers](https://www.fool.com/markets/top-stock-gainers/) [Daily Stock Losers](https://www.fool.com/markets/top-stock-losers/) The Fool Community Foundation is building the Freedometer, a free investing simulation coming to classrooms this fall. [**Get a Sneak Peek »**](https://api.fool.com/infotron/infotrack/click?apikey=35527423-a535-4519-a07f-20014582e03e&impression=df11e8b9-8372-46fb-b1f9-3b6e2968ccf3&url=https%3A%2F%2Ffoolfoundation.org%2Ffollow-the-freedometer%2F%3Fftm_cam%3Dsa-bbn-evergreen%26ftm_veh%3Dfoolcom_promo_banner%26ftm_pit%3D19480%26source%3D%26aid%3D) Times Free Article [Explore Premium Services](https://www.fool.com/services/) By [Motley Fool Transcribing](https://www.fool.com/author/20032/) – May 20, 2026 at 6:16PM EST [Follow us](https://profile.google.com/cp/CgkvbS8wNTc4bWs) Share Summarize with AI ![Logo of jester cap with thought bubble.](https://g.foolcdn.com/image/?url=https%3A%2F%2Fg.foolcdn.com%2Fmisc-assets%2Ffool-transcripts-logo.png&w=3840&op=resize) Image source: The Motley Fool. ## DATE Wednesday, May 20, 2026 at 5 p.m. ET ## CALL PARTICIPANTS - President and Chief Executive Officer — Jen-Hsun Huang - Executive Vice President and Chief Financial Officer — Colette Kress - Vice President of Investor Relations — Toshiya Hari **Need a quote from a Motley Fool analyst? Email pr@fool.com** ## TAKEAWAYS - **Total Revenue** \-\- $82 billion, up 85% year over year and 20% sequentially, marking the third consecutive year-over-year acceleration and fourteenth straight quarter of sequential growth. - **Sequential Revenue Increase** \-\- $13.5 billion sequential increase, a new company record. - **Shareholder Returns** \-\- $20 billion returned through capital allocation, including share repurchases. - **Data Center Revenue** \-\- $75 billion, up 92% year over year and 21% sequentially, driven by Blackwell architecture demand. - **Data Center Computing Revenue** \-\- $60 billion, up 77% year over year. - **Data Center Networking Revenue** \-\- $15 billion, nearly tripled year over year. - **Hyperscale Subsegment Revenue** \-\- $38 billion, ~50% of data center revenue, up 12% sequentially. - **ACIE Subsegment Revenue** \-\- $37 billion, up 31% sequentially, with AI cloud revenue more than tripling year over year. - **Partner Data Centers Over 10MW** \-\- Number nearly doubled in 1 year, now above 80 sites. - **Sovereign Revenue** \-\- Grew more than 80% year over year, with infrastructure deployed in nearly 40 countries. - **AI Infrastructure Pricing** \-\- H100 rental prices increased 20% year to date; A100 cloud pricing up nearly 15%. - **InfiniBand Revenue** \-\- More than quadrupled year over year, bolstered by next-generation XDR deployments. - **Grace Blackwell Throughput** \-\- Blackwell Ultra delivered a 2.7x throughput boost and 60% reduction in cost-per-token on GV300, comparing the last 6 months. - **Vera CPU Platform** \-\- Anticipated $20 billion in standalone CPU revenue for the year, opening a $200 billion market opportunity. - **Production Shipments of VeraRubin** \-\- Set to begin in Q3, with ramp continuing into the following quarters. - **Edge Computing Revenue** \-\- $6.4 billion, up 10% sequentially and 29% year over year; Blackwell workstation demand notable while consumer demand softened due to higher memory and system costs. - **Physical AI Revenue** \-\- Surpassed $9 billion over the trailing 12 months. - **Supply Commitments** \-\- Total supply, including inventory purchase commitments and prepaids, increased to $145 billion. - **GAAP Gross Margin** \-\- 74.9% (non-GAAP 75%), with margins largely flat sequentially as Blackwell accounted for most shipments. - **Operating Expenses** \-\- GAAP and non-GAAP OpEx up 12% sequentially; driven by compensation and higher compute/infrastructure costs. - **Free Cash Flow** \-\- Generated $49 billion, up from $35 billion in the prior quarter. - **Dividend Increase** \-\- Quarterly dividend raised from $0.01 to $0.25 per share. - **Share Repurchase Authorization** \-\- Announced $80 billion new buyback program, in addition to $39 billion left on current plan. - **Q2 Revenue Outlook** \-\- Expected $91 billion, plus or minus 2%, with growth led by data center. - **Q2 Gross Margin Guidance** \-\- 74.9% GAAP, 75% non-GAAP, both plus or minus 50 basis points. - **Q2 OpEx Guidance** \-\- Approximately $8.5 billion (GAAP) and $8.3 billion (non-GAAP). - **Full Year OpEx Growth** \-\- Expected to increase in the upper 40% range, attributed to higher R&D and AI productivity tool usage. - **Full Year Tax Rate Outlook** \-\- 16%-18% for GAAP and non-GAAP, down from previous 17%-19% guidance due to geographic mix changes. - **China Data Center Revenue** \-\- No China compute revenue included in outlook, as no H200 shipments have yet occurred or are anticipated under current circumstances. ## SUMMARY **NVIDIA**( [NVDA](https://www.fool.com/quote/nasdaq/nvda/) 1.18%) reported record-breaking figures across revenue, data center and free cash flow, driven by exceptional Blackwell architecture adoption and increased demand for advanced AI infrastructure from a variety of customer segments. The company re-segmented its data center business into Hyperscale and ACIE to better align with evolving market demand, while emphasizing the rapid scale-up of sovereign AI deployment and agentic AI as the next frontier. NVIDIA introduced Vera as its first purpose-built CPU for agentic AI, unlocked a $200 billion total addressable market for CPUs, and expects significant revenue accretion as customers transition compute platforms. Management provided guidance for the following quarter reflecting continued double-digit sequential growth and reinforced capital returns with a substantial boost to both dividends and share repurchase plans. - Management stated, “Demand has gone parabolic. The reason is simple. Agentic AI has arrived. AI can now do productive and valuable work. Tokens are now profitable, so model makers are in a race to produce more.” - CEO Jen-Hsun Huang explained the new business segmentation aims to capture the distinct needs and go-to-market dynamics of Hyperscale, ACIE, and Edge platforms to give investors clearer visibility into growth drivers. - The number of partner data centers exceeding 10MW nearly doubled in one year, an explicit indicator of the infrastructure scale-up supporting NVIDIA’s growth. - Vera and VeraRubin are positioned as catalyst products for agentic AI, with shipments scheduled to ramp starting in Q3 and a focus on both standalone and system-integrated use cases. - Management commented that LPX and similar SRAM-based accelerators are expected to remain niche, reaffirming Blackwell and Vera platforms as central to the company’s growth strategy. - NVIDIA explicitly excluded China data center compute revenue from its outlook, reflecting caution amid continued export licensing uncertainty for H200 shipments to mainland customers. ## INDUSTRY GLOSSARY - **Blackwell architecture**: NVIDIA’s latest GPU platform, purpose-built for AI, designed for high throughput and low token cost at inference, deployed across hyperscale and frontier AI use cases. - **Vera/VeraRubin**: NVIDIA’s custom CPU product and its paired platform, designed specifically for agentic AI workloads; enables new system architectures aiming at high performance and energy efficiency. - **ACIE**: Stands for AI Cloud, Industrial, and Enterprise—a newly defined NVIDIA data center subsegment capturing AI-specialized, non-hyperscale deployments including sovereign, industrial, and regional AI infrastructure. - **Spectrum-X**: End-to-end Ethernet networking platform from NVIDIA, positioned for AI data center workloads and cited as surpassing all peers’ combined Ethernet deployment scale. - **LPX**: NVIDIA’s SRAM-based AI accelerator product line, designed for high token rate and low latency use cases, with limited throughput and context processing capacity. - **Token**: The unit of output/inference in AI models, used as a metric for compute efficiency and economic return in NVIDIA’s reporting and performance claims. - **Agentic AI**: AI systems capable of autonomous, goal-driven action and orchestration across multiple tasks, cited by NVIDIA as the core driver for its next growth phase and platform innovation. - **Hyperscale**: The segment of cloud service providers and consumer internet companies operating massive-scale data centers, as defined in NVIDIA’s new reporting framework. - **Frontier AI**: Refers to the most advanced, cutting-edge AI models and the organizations building them, including but not limited to OpenAI, Anthropic, and others mentioned as key NVIDIA customers. ## Full Conference Call Transcript **Toshiya Hari:** Thank you, and good afternoon, everyone. Welcome to NVIDIA's conference call for the 2027. With me today from NVIDIA are Jensen Huang, president and chief executive officer and Colette Kress, executive vice president and chief financial officer. Our call is being webcast live on NVIDIA's investor relations website. The webcast will be available for replay until the conference call to discuss our financial results for the 2027. The content of today's call is NVIDIA's property. It cannot be reproduced or transcribed without our prior written consent. During this call, we may make forward looking statements based on current expectations. These are subject to a number of significant risks and uncertainties and our actual results may differ materially. For a discussion of factors that could affect our future financial results and business, please refer to the disclosure in today's earnings release, our most recent forms 10 k and 10 q, and the reports that we may file on Form 8-K with the Securities and Exchange Commission. All our statements are made as of today, 05/20/2026, based on information currently available to us. Except as required by law, we assume no obligation to update any such statements. During this call, we will discuss non GAAP financial measures. You can find a reconciliation of these non GAAP financial measures to GAAP financial measures in our CFO commentary, which is posted on our website. With that, let me turn the call over to Colette. **Colette Kress:** Thank you, Toshiya. Delivered an exceptional quarter. With revenue, operating income, and free cash flow exceeding our prior records. Total revenue of $82 billion was up 85% year over year and 20% sequentially. This marked our third consecutive quarter of year over year acceleration and the fourteenth straight quarter of sequential growth. A significant feat given the sheer size and complexity of our manufacturing operations. The $13.5 billion sequential revenue increase was also a record. We capitalized on the inflection and inference demand by ramping Blackwell systems across our diverse end customer base. From hyperscalers to model makers to AI cloud providers and sovereign customers. In Q1, we also allocated capital effectively across R and D, investments in our ecosystem, and share repurchases. We returned a record $20 billion to our shareholders while executing strategic investments, both upstream supply chain and downstream go to market ecosystem. This is critical to the market's development and our long term position. Data center revenue of $75 billion was up 92% year over year and 21% sequentially. Driven by sustained strength in our Blackwell architecture. And demand for GB300 and NVL72 was particularly strong with frontier model builders and hyperscalers each having cumulatively deployed hundreds and thousands of Blackwell GPUs. marked the fastest product ramp ouour company's history. Grace Blackwell is the fastest training system as well as the lowest token generation cost at inference. Spectrum-X, our end to end Ethernet platform purpose built for AI is now larger than all Ethernet network peers combined. InfiniBand has also had a very strong quarter growing more than 4x year over year driven by deployments of our next generation XDR technology. For your models, data center computing revenue of $60 billion was up 77% year over year, while data center networking revenue of $15 billion nearly tripled year over year. Before we deep dive into data center, we would like to brief you on our transition to a new reporting framework that better reflects our current and future growth drivers. We have 2 market platforms. Data center and edge computing. Within data center, we will report to submarkets. Hyperscale and ACIE. Which incorporates AI clouds, industrial, and enterprise. Hyperscale will include revenue from the public cloud, and the world's largest consumer Internet companies, while ACIE, addresses our growth opportunities in diverse AI purpose built data centers, and AI factories across industries and countries. Edge computing highlights devices for agentic and physical AI. Including PCs, gaming consoles, workstations, AI RAN base stations, robotics, and automotive. For your reference, we have posted on our website a revenue breakdown based on our new platforms for the past 9 quarters. Moving back to our data center results. Hyperscale at $38 billion was approximately 50% of data center revenue and increased 12% quarter over quarter. ACIE revenue was $37 billion and grew 31% quarter over quarter including AI cloud revenue that more than tripled year over year. Our customers have enabled rapid stand up of AI compute capacity. The number of partner data centers exceeding 10MW has nearly doubled in just 1 year. Now surpassing 80 sites. Sovereign revenue increased more than 80% year over year. NVIDIA AI infrastructure is now deployed across nearly 40 countries representing $50 trillion in GDP. As evident to our Q1 results our customer base is diverse and growing. Supported by our vast ecosystem and installed base, breadth of CUDA accelerated application, and the lowest token cost provider. We are well positioned to address a market opportunity that far exceeds that of any other AI computing platform. Demand for AI infrastructure continues to expand at an unprecedented pace. The build out of AI factories is accelerating. The value of NVIDIA AI infrastructure is rising. The price of renting an H100 has risen 20% year to date, while A100 cloud pricing is up nearly 15%. Benefiting from the versatility of our platform and continuous performance enhancements enhanced by our software stack, customers are generating profitable revenue beyond the depreciable life of their GPUs. The vast and trusted marketplace for NVIDIA compute is a critical foundation on which billions in AI infrastructure spending is being financed by the ecosystem. There are 2 primary drivers behind the accelerating build out of AI infrastructure. First, from search and advertising to recommender systems and content understanding. The largest hyperscale workloads continue to transition from CPU to GPU based accelerating computing. Second, the adoption of products and services native to AI is inflecting. Since the advent of ChatGPT, we have witnessed mainstream AI transition from 1 shot inference to reasoning and to now agentic. AI is no longer a nice to have. AI is now a necessity for enhancing productivity across all industries and roles. This is propelling revenue acceleration across all layers of the AI cake. Including energy, chips, infrastructure, models, [truncated]nullnullNvidia (NVDA) Q1 2027 Earnings Transcriptnull[]nullnull
Parameters
--querystringrequiredCompany name, ticker, CIK, or broader SEC search theme. e.g. "NVIDIA"
--source-typesstringrequiredComma-separated source types to collect: sec_filings, earnings_transcripts, or both. e.g. "sec_filings,earnings_transcripts"
--form-typesstringrequiredComma-separated SEC form types to include, such as 10-K,10-Q. e.g. "10-K,10-Q"
--max-documentsnumberrequiredMaximum number of document rows to return, from 1 to 20. e.g. 2
--output-modestringrequiredOutput layout: document_rows or grouped_by_company. e.g. "document_rows"
--date-rangestringDate window for SEC filing discovery. default "last 12 months"
--include-tablesbooleanWhether to include parsed filing tables when visible. default true
--include-risk-factorsbooleanWhether to extract risk factors text when visible. default true
--include-mdabooleanWhether to extract MD&A text when visible. default true
--include-financial-statementsbooleanWhether to classify likely financial statement tables separately. default true
--languagestringOutput language; currently English. default "English"
--snapshot-labelstringLabel attached to all rows for monitoring snapshots; defaults to the run timestamp. default ""
--sort-hintstringSort preference for discovery; currently newest. default "newest"

Marketplace

Publish this collector so others can deploy it — you keep ownership.

0 subscribers
bo-05@bo-05
0 runs in 14d · published 2d ago

Versions

Every build and self-heal appends a version. Pin one to lock runs to it.

managed by author
v1builtapprovedcurrent2d ago
How this script collects data
import Firecrawl from "@mendable/firecrawl-js";
import * as cheerio from "cheerio";
import { parseArgs } from "node:util";

const apiKey = process.env.FIRECRAWL_API_KEY;
if (!apiKey) {
  console.error("FIRECRAWL_API_KEY is not set");
  process.exit(1);
}

const firecrawl = new Firecrawl({ apiKey });

const { values: flags } = parseArgs({
  strict: true,
  options: {
    query: { type: "string" },
    "source-types": { type: "string" },
    "form-types": { type: "string" },
    "max-documents": { type: "string" },
    "output-mode": { type: "string" },
    "date-range": { type: "string" },
    "include-tables": { type: "string" },
    "include-risk-factors": { type: "string" },
    "include-mda": { type: "string" },
    "include-financial-statements": { type: "string" },
    language: { type: "string" },
    "snapshot-label": { type: "string" },
    "sort-hint": { type: "string" },
  },
});

function requiredFlag(name: string): string {
  const value = flags[name] as string | undefined;
  if (!value || !value.trim()) {
    console.error(`--${name} is required`);
    process.exit(1);
  }
  return value.trim();
}

const query = requiredFlag("query");
const sourceTypes = parseList(requiredFlag("source-types"));
const formTypes = parseList(requiredFlag("form-types"));
const maxDocuments = Number(requiredFlag("max-documents"));
const outputMode = requiredFlag("output-mode");
const dateRange = String(flags["date-range"] ?? "last 12 months");
const includeTables = parseBoolean(String(flags["include-tables"] ?? "true"), "include-tables");
const includeRiskFactors = parseBoolean(String(flags["include-risk-factors"] ?? "true"), "include-risk-factors");
const includeMda = parseBoolean(String(flags["include-mda"] ?? "true"), "include-mda");
const includeFinancialStatements = parseBoolean(String(flags["include-financial-statements"] ?? "true"), "include-financial-statements");
const language = String(flags.language ?? "English");
const snapshotLabel = String(flags["snapshot-label"] ?? new Date().toISOString());
const sortHint = String(flags["sort-hint"] ?? "newest");

if (!Number.isInteger(maxDocuments) || maxDocuments < 1 || maxDocuments > 20) {
  console.error("OUT_OF_SCOPE: --max-documents must be an integer from 1 to 20");
  process.exit(1);
}
validateList("source-types", sourceTypes, ["sec_filings", "earnings_transcripts"]);
if (formTypes.length === 0) {
  console.error("OUT_OF_SCOPE: --form-types must include at least one SEC form");
  process.exit(1);
}
if (outputMode !== "document_rows" && outputMode !== "grouped_by_company") {
  console.error("OUT_OF_SCOPE: --output-mode must be document_rows or grouped_by_company");
  process.exit(1);
}
if (language.toLowerCase() !== "english") {
  console.error("OUT_OF_SCOPE: this collector currently supports English output only");
  process.exit(1);
}
if (sortHint !== "newest") {
  console.error("OUT_OF_SCOPE: this collector currently supports --sort-hint=newest only");
  process.exit(1);
}

type SecCandidate = {
  companyName: string | null;
  ticker: string | null;
  cik: string | null;
  formType: string | null;
  filingDate: string | null;
  periodOfReport: string | null;
  accessionNumber: string | null;
  documentTitle: string | null;
  documentUrl: string | null;
  sourcePageUrl: string | null;
  secondarySourceUrls: string[];
};

type OutputRow = {
  tracking_key: string;
  snapshot_label: string;
  collected_at: string;
  company_name: string | null;
  ticker: string | null;
  cik: string | null;
  document_type: string;
  form_type: string | null;
  filing_date: string | null;
  period_of_report: string | null;
  accession_number: string | null;
  document_title: string | null;
  document_url: string | null;
  source_page_url: string | null;
  secondary_source_urls: string[];
  risk_factors_text: string | null;
  mda_text: string | null;
  business_overview_text: string | null;
  financial_statement_tables: TableOut[] | null;
  other_tables: TableOut[] | null;
  transcript_date: string | null;
  transcript_title: string | null;
  transcript_text: string | null;
  speaker_turns: SpeakerTurn[] | null;
  confidence: number;
  notes: string[];
};

type TableOut = {
  caption: string | null;
  headers: string[];
  rows: string[][];
  row_objects: Record<string, string>[];
};

type SpeakerTurn = {
  speaker: string | null;
  text: string;
};

function parseList(value: string): string[] {
  return value.split(",").map((part) => part.trim()).filter(Boolean);
}

function validateList(name: string, values: string[], allowed: string[]): void {
  const allowedSet = new Set(allowed);
  for (const value of values) {
    if (!allowedSet.has(value)) {
      console.error(`OUT_OF_SCOPE: --${name} contains unsupported value ${value}`);
      process.exit(1);
    }
  }
}

function parseBoolean(value: string, name: string): boolean {
  if (value === "true") return true;
  if (value === "false") return false;
  console.error(`OUT_OF_SCOPE: --${name} must be true or false`);
  process.exit(1);
}

function cleanText(value: string | null | undefined): string {
  return String(value ?? "").replace(/\s+/g, " ").trim();
}

function compactCik(value: string | null): string | null {
  if (!value) return null;
  const digits = value.split("").filter((char) => char >= "0" && char <= "9").join("");
  if (!digits) return null;
  return digits.padStart(10, "0");
}

function noLeadCik(value: string | null): string | null {
  const cik = compactCik(value);
  if (!cik) return null;
  const stripped = cik.replace(/^0+/, "");
  return stripped || "0";
}

function accessionNoDashes(value: string | null): string | null {
  if (!value) return null;
  return value.split("-").join("");
}

function parseJsonFromDoc(doc: any, label: string): any {
  const raw = String(doc.rawHtml ?? doc.markdown ?? "").trim();
  if (!raw) throw new Error(`no JSON returned from ${label}`);
  const fenced = raw.startsWith("```json") ? raw.slice(7, raw.lastIndexOf("```")).trim() : raw;
  return JSON.parse(fenced);
}

function dateStartForRange(range: string): string | null {
  const lower = range.toLowerCase().trim();
  const now = new Date();
  let months: number | null = null;
  if (lower === "last 12 months") months = 12;
  if (lower === "last 6 months") months = 6;
  if (lower === "last 24 months") months = 24;
  if (months === null) return null;
  const start = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth() - months, now.getUTCDate()));
  return start.toISOString().slice(0, 10);
}

async function resolveCompanyFromSec(): Promise<{ cik: string | null; ticker: string | null; name: string | null }> {
  const cik = compactCik(query);
  if (cik && query.split("").filter((char) => char >= "0" && char <= "9").length >= 4) {
    return { cik, ticker: null, name: null };
  }

  const doc = await firecrawl.scrape("https://www.sec.gov/files/company_tickers.json", {
    formats: ["rawHtml"],
    integration: "prometheus",
  });
  const data = parseJsonFromDoc(doc, "SEC company tickers");
  const entries = Object.keys(data).map((key) => data[key]);
  const q = query.toLowerCase();
  let best: any = null;
  for (let i = 0; i < entries.length; i += 1) {
    const item = entries[i];
    const ticker = String(item.ticker ?? "").toLowerCase();
    const title = String(item.title ?? "").toLowerCase();
    if (ticker === q || title === q) {
      best = item;
      break;
    }
    if (!best && (title.includes(q) || q.includes(ticker))) {
      best = item;
    }
  }
  if (!best) return { cik: null, ticker: null, name: null };
  return {
    cik: compactCik(String(best.cik_str ?? "")),
    ticker: String(best.ticker ?? "") || null,
    name: String(best.title ?? "") || null,
  };
}

async function discoverSecCandidates(): Promise<SecCandidate[]> {
  const resolved = await resolveCompanyFromSec();
  if (resolved.cik) {
    const submissionsUrl = `https://data.sec.gov/submissions/CIK${resolved.cik}.json`;
    const doc = await firecrawl.scrape(submissionsUrl, {
      formats: ["rawHtml"],
      integration: "prometheus",
    });
    const data = parseJsonFromDoc(doc, "SEC company submissions");
    return candidatesFromSubmissions(data, resolved);
  }
  return candidatesFromSearch();
}

function candidatesFromSubmissions(data: any, resolved: { cik: string | null; ticker: string | null; name: string | null }): SecCandidate[] {
  const recent = data.filings?.recent;
  if (!recent) throw new Error("SEC submissions response did not include recent filings");
  const out: SecCandidate[] = [];
  const forms = recent.form ?? [];
  const startDate = dateStartForRange(dateRange);
  const ticker = resolved.ticker ?? (Array.isArray(data.tickers) ? data.tickers[0] ?? null : null);
  const companyName = resolved.name ?? data.name ?? null;
  const cik = compactCik(String(data.cik ?? resolved.cik ?? ""));
  const cikNoLead = noLeadCik(cik);

  for (let i = 0; i < forms.length && out.length < maxDocuments; i += 1) {
    const form = String(forms[i] ?? "");
    if (!formTypes.includes(form)) continue;
    const filingDate = String(recent.filingDate?.[i] ?? "");
    if (startDate && filingDate && filingDate < startDate) continue;
    const accession = String(recent.accessionNumber?.[i] ?? "");
    const primaryDocument = String(recent.primaryDocument?.[i] ?? "");
    const accessionCompact = accessionNoDashes(accession);
    const base = cikNoLead && accessionCompact ? `https://www.sec.gov/Archives/edgar/data/${cikNoLead}/${accessionCompact}` : null;
    out.push({
      companyName,
      ticker,
      cik,
      formType: form,
      filingDate: filingDate || null,
      periodOfReport: String(recent.reportDate?.[i] ?? "") || null,
      accessionNumber: accession || null,
      documentTitle: String(recent.primaryDocDescription?.[i] ?? form) || form,
      documentUrl: base && primaryDocument ? `${base}/${primaryDocument}` : null,
      sourcePageUrl: base && accession ? `${base}/${accession}-index.html` : submissionsUrlFor(cik),
      secondarySourceUrls: [submissionsUrlFor(cik)].filter(Boolean) as string[],
    });
  }
  return out;
}

async function candidatesFromSearch(): Promise<SecCandidate[]> {
  const formQuery = formTypes.map((form) => encodeURIComponent(form)).join("%2C");
  const searchUrl = `https://efts.sec.gov/LATEST/search-index?keys=${encodeURIComponent(query)}&category=form-cat1&forms=${formQuery}&from=0&size=${Math.min(maxDocuments, 10)}`;
  const doc = await firecrawl.scrape(searchUrl, {
    formats: ["rawHtml"],
    integration: "prometheus",
  });
  const data = parseJsonFromDoc(doc, "SEC EDGAR full-text search");
  const hits = data.hits?.hits ?? [];
  const out: SecCandidate[] = [];
  const startDate = dateStartForRange(dateRange);
  for (let i = 0; i < hits.length && out.length < maxDocuments; i += 1) {
    const src = hits[i]?._source ?? {};
    const fileDate = String(src.file_date ?? "");
    if (startDate && fileDate && fileDate < startDate) continue;
    const form = String(src.form ?? src.root_forms?.[0] ?? "");
    if (!formTypes.includes(form) && !formTypes.includes(String(src.root_forms?.[0] ?? ""))) continue;
    const accession = String(src.adsh ?? "");
    const cik = compactCik(String(src.ciks?.[0] ?? ""));
    const cikNoLead = noLeadCik(cik);
    const accessionCompact = accessionNoDashes(accession);
    const fileName = String(hits[i]?._id ?? "").split(":")[1] ?? "";
    const base = cikNoLead && accessionCompact ? `https://www.sec.gov/Archives/edgar/data/${cikNoLead}/${accessionCompact}` : null;
    const display = String(src.display_names?.[0] ?? "");
    out.push({
      companyName: display.split("  (")[0] || null,
      ticker: tickerFromDisplay(display),
      cik,
      formType: form || null,
      filingDate: fileDate || null,
      periodOfReport: String(src.period_ending ?? "") || null,
      accessionNumber: accession || null,
      documentTitle: String(src.file_description ?? form) || null,
      documentUrl: base && fileName ? `${base}/${fileName}` : null,
      sourcePageUrl: base && accession ? `${base}/${accession}-index.html` : searchUrl,
      secondarySourceUrls: [searchUrl],
    });
  }
  return out;
}

function submissionsUrlFor(cik: string | null): string | null {
  return cik ? `https://data.sec.gov/submissions/CIK${compactCik(cik)}.json` : null;
}

function tickerFromDisplay(display: string): string | null {
  const marker = "  (";
  const start = display.indexOf(marker);
  if (start < 0) return null;
  const end = display.indexOf(")", start);
  if (end < 0) return null;
  const inside = display.slice(start + marker.length, end);
  if (inside.includes("CIK")) return null;
  return inside.split(",")[0].trim() || null;
}

async function extractSecRow(candidate: SecCandidate, collectedAt: string): Promise<OutputRow> {
  const notes: string[] = [];
  let risk: string | null = null;
  let mda: string | null = null;
  let business: string | null = null;
  let financialTables: TableOut[] | null = null;
  let otherTables: TableOut[] | null = null;

  if (!candidate.documentUrl) {
    notes.push("SEC filing document URL was unavailable from discovery metadata.");
  } else {
    const doc = await firecrawl.scrape(candidate.documentUrl, {
      formats: ["rawHtml"],
      integration: "prometheus",
    });
    const rawHtml = String((doc as any).rawHtml ?? "");
    if (!rawHtml) throw new Error("SEC filing document scrape returned no raw HTML");
    const $ = cheerio.load(rawHtml);
    $("script, style, noscript").remove();
    const bodyText = cleanText($("body").text());
    if (includeRiskFactors) risk = sectionBetween(bodyText, ["item 1a. risk factors", "item 1a risk factors"], ["item 1b.", "item 1b ", "item 2."]);
    if (includeMda) mda = sectionBetween(bodyText, ["item 7. management", "item 7 management", "item 2. management", "item 2 management"], ["item 7a.", "item 3.", "item 8."]);
    business = sectionBetween(bodyText, ["item 1. business", "item 1 business"], ["item 1a.", "item 2."]);
    if (!risk && includeRiskFactors) notes.push("Risk factors section could not be isolated reliably from visible filing text.");
    if (!mda && includeMda) notes.push("MD&A section could not be isolated reliably from visible filing text.");
    if (!business) notes.push("Business overview section could not be isolated reliably from visible filing text.");
    if (includeTables) {
      const tables = extractTables($, includeFinancialStatements);
      financialTables = tables.financial;
      otherTables = tables.other;
      if (financialTables.length === 0 && includeFinancialStatements) notes.push("No financial statement tables were confidently classified from visible tables.");
    }
  }

  return emptyRow({
    trackingKey: trackingKey(candidate.cik, candidate.accessionNumber ?? candidate.documentUrl ?? "sec"),
    collectedAt,
    documentType: "sec_filing",
    companyName: candidate.companyName,
    ticker: candidate.ticker,
    cik: candidate.cik,
    formType: candidate.formType,
    filingDate: candidate.filingDate,
    periodOfReport: candidate.periodOfReport,
    accessionNumber: candidate.accessionNumber,
    documentTitle: candidate.documentTitle,
    documentUrl: candidate.documentUrl,
    sourcePageUrl: candidate.sourcePageUrl,
    secondarySourceUrls: candidate.secondarySourceUrls,
    risk,
    mda,
    business,
    financialTables,
    otherTables,
    confidence: candidate.documentUrl ? 0.86 : 0.6,
    notes,
  });
}

function sectionBetween(text: string, starts: string[], ends: string[]): string | null {
  const lower = text.toLowerCase();
  let bestStart = -1;
  let startLength = 0;
  for (let i = 0; i < starts.length; i += 1) {
    const found = lower.indexOf(starts[i]);
    if (found >= 0 && (bestStart < 0 || found < bestStart)) {
      bestStart = found;
      startLength = starts[i].length;
    }
  }
  if (bestStart < 0) return null;
  let bestEnd = text.length;
  const from = bestStart + startLength;
  for (let i = 0; i < ends.length; i += 1) {
    const found = lower.indexOf(ends[i], from);
    if (found > from && found < bestEnd) bestEnd = found;
  }
  const section = text.slice(bestStart, bestEnd).trim();
  if (section.length < 200) return null;
  return limitText(section, 14000);
}

function extractTables($: cheerio.CheerioAPI, includeFinancial: boolean): { financial: TableOut[]; other: TableOut[] } {
  const financial: TableOut[] = [];
  const other: TableOut[] = [];
  const maxTables = 18;
  const tableNodes = $("table").toArray();
  for (let i = 0; i < tableNodes.length && i < maxTables; i += 1) {
    const table = $(tableNodes[i]);
    const rows: string[][] = [];
    const trNodes = table.find("tr").toArray();
    for (let r = 0; r < trNodes.length && r < 40; r += 1) {
      const cells = $(trNodes[r]).find("th,td").toArray().map((cell) => cleanText($(cell).text())).filter(Boolean);
      if (cells.length > 0) rows.push(cells.slice(0, 12));
    }
    if (rows.length < 2) continue;
    const caption = cleanText(table.find("caption").first().text()) || null;
    const headers = rows[0];
    const rowObjects = rows.slice(1, 20).map((row) => rowToObject(headers, row));
    const out = { caption, headers, rows: rows.slice(1, 20), row_objects: rowObjects };
    const tableText = cleanText(`${caption ?? ""} ${rows.slice(0, 5).map((row) => row.join(" ")).join(" ")}`).toLowerCase();
    const isFinancial = includesAny(tableText, ["statement of operations", "balance sheet", "cash flow", "income statement", "assets", "liabilities", "revenue", "net income"]);
    if (includeFinancial && isFinancial && financial.length < 8) financial.push(out);
    if ((!isFinancial || !includeFinancial) && other.length < 6) other.push(out);
  }
  return { financial, other };
}

function rowToObject(headers: string[], row: string[]): Record<string, string> {
  const out: Record<string, string> = {};
  for (let i = 0; i < headers.length && i < row.length; i += 1) {
    const key = headers[i] || `column_${i + 1}`;
    out[key] = row[i] ?? "";
  }
  return out;
}

function includesAny(text: string, needles: string[]): boolean {
  for (let i = 0; i < needles.length; i += 1) {
    if (text.includes(needles[i])) return true;
  }
  return false;
}

async function discoverTranscriptRows(existingCompany: { companyName: string | null; ticker: string | null; cik: string | null }, collectedAt: string, remaining: number): Promise<OutputRow[]> {
  const rows: OutputRow[] = [];
  if (remaining <= 0) return rows;
  const transcriptQuery = `${existingCompany.companyName ?? query} ${existingCompany.ticker ?? ""} earnings call transcript`;
  const search = await firecrawl.search(transcriptQuery, {
    limit: Math.min(5, Math.max(1, remaining + 2)),
    integration: "prometheus",
  });
  const searchItems = (search as any).data ?? (search as any).web ?? [];
  const candidates = searchItems.filter((item: any) => isTranscriptCandidate(item)).sort((a: any, b: any) => transcriptScore(b) - transcriptScore(a));
  const maxTranscriptScrapes = Math.min(3, remaining, candidates.length);
  for (let i = 0; i < maxTranscriptScrapes && rows.length < remaining; i += 1) {
    const item = candidates[i];
    const url = String(item.url ?? "");
    if (!url) continue;
    const doc = await firecrawl.scrape(url, {
      formats: ["markdown"],
      integration: "prometheus",
    });
    const markdown = cleanTranscriptText(String((doc as any).markdown ?? ""));
    if (markdown.length < 600 || looksPaywalled(markdown)) continue;
    const speakerTurns = extractSpeakerTurnsBounded(markdown);
    rows.push(emptyRow({
      trackingKey: trackingKey(existingCompany.cik, url),
      collectedAt,
      documentType: "earnings_transcript",
      companyName: existingCompany.companyName,
      ticker: existingCompany.ticker,
      cik: existingCompany.cik,
      formType: null,
      filingDate: null,
      periodOfReport: null,
      accessionNumber: null,
      documentTitle: cleanText(String(item.title ?? "")) || "Earnings call transcript",
      documentUrl: url,
      sourcePageUrl: url,
      secondarySourceUrls: [],
      risk: null,
      mda: null,
      business: null,
      financialTables: null,
      otherTables: null,
      transcriptDate: dateFromText(String(item.title ?? "") + " " + markdown),
      transcriptTitle: cleanText(String(item.title ?? "")) || null,
      transcriptText: limitText(markdown, 18000),
      speakerTurns,
      confidence: speakerTurns.length > 0 ? 0.74 : 0.62,
      notes: speakerTurns.length > 0 ? ["Transcript source is publicly visible and speaker turns were parsed with bounded line scanning."] : ["Transcript source is publicly visible, but speaker turns could not be confidently separated."],
    }));
  }
  return rows;
}

function isTranscriptCandidate(item: any): boolean {
  const text = `${item.title ?? ""} ${item.description ?? ""} ${item.url ?? ""}`.toLowerCase();
  if (!text.includes("transcript")) return false;
  if (includesAny(text, ["premium", "subscribe", "paywall"])) return false;
  return includesAny(text, ["earnings", "quarter", "q1", "q2", "q3", "q4", "call"]);
}

function transcriptScore(item: any): number {
  const text = `${item.title ?? ""} ${item.description ?? ""} ${item.url ?? ""}`.toLowerCase();
  let score = 0;
  if (text.includes("call-transcripts")) score += 5;
  if (text.includes("earnings transcript")) score += 4;
  if (text.includes("/20")) score += 2;
  if (text.includes("investor")) score += 1;
  if (text.includes("earnings-calls")) score -= 3;
  if (text.includes("seekingalpha")) score -= 2;
  if (text.includes("morningstar")) score -= 2;
  return score;
}

function cleanTranscriptText(text: string): string {
  return text.split("\n").map((line) => line.trim()).filter(Boolean).join("\n");
}

function looksPaywalled(text: string): boolean {
  const lower = text.toLowerCase();
  return includesAny(lower, ["subscribe to continue", "sign in to continue", "premium article", "access this transcript"]);
}

function extractSpeakerTurnsBounded(text: string): SpeakerTurn[] {
  const lines = text.split("\n").slice(0, 500);
  const turns: SpeakerTurn[] = [];
  for (let i = 0; i < lines.length && turns.length < 80; i += 1) {
    const line = cleanText(lines[i]);
    if (!line || line.length > 160) continue;
    const colon = line.indexOf(":");
    if (colon > 1 && colon < 60) {
      const speaker = line.slice(0, colon).trim();
      const spoken = line.slice(colon + 1).trim();
      if (speaker.length > 1 && spoken.length > 20) {
        turns.push({ speaker, text: limitText(spoken, 1200) });
      }
      continue;
    }
    const next = cleanText(lines[i + 1] ?? "");
    if (isLikelySpeakerName(line) && next.length > 40) {
      turns.push({ speaker: line, text: limitText(next, 1200) });
      i += 1;
    }
  }
  return turns;
}

function isLikelySpeakerName(line: string): boolean {
  if (line.length < 3 || line.length > 70) return false;
  if (includesAny(line.toLowerCase(), ["operator", "analyst", "question-and-answer", "presentation"])) return true;
  const words = line.split(" ");
  if (words.length < 2 || words.length > 5) return false;
  let capitalized = 0;
  for (let i = 0; i < words.length; i += 1) {
    const first = words[i].charAt(0);
    if (first >= "A" && first <= "Z") capitalized += 1;
  }
  return capitalized >= Math.min(2, words.length);
}

function dateFromText(text: string): string | null {
  const months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
  for (let i = 0; i < months.length; i += 1) {
    const month = months[i];
    const idx = text.indexOf(month);
    if (idx < 0) continue;
    const snippet = text.slice(idx, idx + 40);
    const parts = snippet.replace(",", " ").split(" ").filter(Boolean);
    if (parts.length >= 3) return parts.slice(0, 3).join(" ");
  }
  return null;
}

function limitText(text: string, max: number): string {
  if (text.length <= max) return text;
  return `${text.slice(0, max).trim()} [truncated]`;
}

function trackingKey(cik: string | null, value: string): string {
  return `${snapshotLabel}:${cik ?? "unknown"}:${value}`.replace(/\s+/g, "_");
}

function emptyRow(input: {
  trackingKey: string;
  collectedAt: string;
  documentType: string;
  companyName: string | null;
  ticker: string | null;
  cik: string | null;
  formType: string | null;
  filingDate: string | null;
  periodOfReport: string | null;
  accessionNumber: string | null;
  documentTitle: string | null;
  documentUrl: string | null;
  sourcePageUrl: string | null;
  secondarySourceUrls: string[];
  risk: string | null;
  mda: string | null;
  business: string | null;
  financialTables: TableOut[] | null;
  otherTables: TableOut[] | null;
  transcriptDate?: string | null;
  transcriptTitle?: string | null;
  transcriptText?: string | null;
  speakerTurns?: SpeakerTurn[] | null;
  confidence: number;
  notes: string[];
}): OutputRow {
  return {
    tracking_key: input.trackingKey,
    snapshot_label: snapshotLabel,
    collected_at: input.collectedAt,
    company_name: input.companyName,
    ticker: input.ticker,
    cik: input.cik,
    document_type: input.documentType,
    form_type: input.formType,
    filing_date: input.filingDate,
    period_of_report: input.periodOfReport,
    accession_number: input.accessionNumber,
    document_title: input.documentTitle,
    document_url: input.documentUrl,
    source_page_url: input.sourcePageUrl,
    secondary_source_urls: input.secondarySourceUrls,
    risk_factors_text: input.risk,
    mda_text: input.mda,
    business_overview_text: input.business,
    financial_statement_tables: input.financialTables,
    other_tables: input.otherTables,
    transcript_date: input.transcriptDate ?? null,
    transcript_title: input.transcriptTitle ?? null,
    transcript_text: input.transcriptText ?? null,
    speaker_turns: input.speakerTurns ?? null,
    confidence: input.confidence,
    notes: input.notes,
  };
}

function groupedOutput(rows: OutputRow[]) {
  const companies: Record<string, { company_name: string | null; ticker: string | null; cik: string | null; documents: OutputRow[] }> = {};
  for (let i = 0; i < rows.length; i += 1) {
    const row = rows[i];
    const key = row.cik ?? row.company_name ?? "unknown";
    if (!companies[key]) {
      companies[key] = { company_name: row.company_name, ticker: row.ticker, cik: row.cik, documents: [] };
    }
    companies[key].documents.push(row);
  }
  return {
    snapshot_label: snapshotLabel,
    collected_at: rows[0]?.collected_at ?? new Date().toISOString(),
    query,
    companies: Object.keys(companies).map((key) => companies[key]),
  };
}

async function main() {
  const collectedAt = new Date().toISOString();
  const rows: OutputRow[] = [];
  let firstCompany = { companyName: null as string | null, ticker: null as string | null, cik: null as string | null };

  if (sourceTypes.includes("sec_filings") && rows.length < maxDocuments) {
    const candidates = await discoverSecCandidates();
    if (candidates.length === 0) throw new Error("no SEC filings matched the requested query, forms, and date range");
    firstCompany = { companyName: candidates[0].companyName, ticker: candidates[0].ticker, cik: candidates[0].cik };
    const reserveTranscriptSlot = sourceTypes.includes("earnings_transcripts") && maxDocuments > 1 ? 1 : 0;
    const secDocumentLimit = Math.max(1, maxDocuments - reserveTranscriptSlot);
    const maxSecScrapes = Math.min(candidates.length, secDocumentLimit);
    for (let i = 0; i < maxSecScrapes && rows.length < secDocumentLimit; i += 1) {
      rows.push(await extractSecRow(candidates[i], collectedAt));
    }
  }

  if (sourceTypes.includes("earnings_transcripts") && rows.length < maxDocuments) {
    const companyContext = firstCompany.companyName || firstCompany.ticker || firstCompany.cik ? firstCompany : { companyName: query, ticker: null, cik: null };
    const transcriptRows = await discoverTranscriptRows(companyContext, collectedAt, maxDocuments - rows.length);
    for (let i = 0; i < transcriptRows.length && rows.length < maxDocuments; i += 1) {
      rows.push(transcriptRows[i]);
    }
  }

  const out = outputMode === "grouped_by_company" ? groupedOutput(rows) : rows;
  process.stdout.write(JSON.stringify(out));
}

main().catch((err) => {
  console.error(err);
  process.exit(1);
});
deploy to unlock

Deploy this collector to unlock schedules, the API endpoint, and destinations.

One person builds it. Everyone keeps it fresh.