{"quoteSummary":{"result":[{"quoteUnadjustedPerformanceOverview":{"maxAge":1,"benchmark":{"symbol":"^GSPC","shortName":"S&P 500"},"performanceOverview":{"asOfDate":{"raw":1774569600,"fmt":"2026-03-27"},"fiveDaysReturn":{"raw":0.08170765,"fmt":"8.17%"},"oneMonthReturn":{"raw":-0.0139175495,"fmt":"-1.39%"},"threeMonthReturn":{"raw":0.19469154,"fmt":"19.47%"},"sixMonthReturn":{"raw":0.4594697,"fmt":"45.95%"},"ytdReturnPct":{"raw":0.22451584,"fmt":"22.45%"},"oneYearTotalReturn":{"raw":0.80429137,"fmt":"80.43%"},"twoYearTotalReturn":{"raw":1.2173283,"fmt":"121.73%"},"threeYearTotalReturn":{"raw":1.4731736,"fmt":"147.32%"},"fiveYearTotalReturn":{"raw":1.2972078,"fmt":"129.72%"},"tenYearTotalReturn":{"raw":7.4646015,"fmt":"746.46%"},"maxReturn":{"raw":6.6519995,"fmt":"665.20%"}},"performanceOverviewBenchmark":{"asOfDate":{"raw":1774569600,"fmt":"2026-03-27"},"fiveDaysReturn":{"raw":-0.02115274,"fmt":"-2.12%"},"oneMonthReturn":{"raw":-0.074144304,"fmt":"-7.41%"},"threeMonthReturn":{"raw":-0.08096605,"fmt":"-8.10%"},"sixMonthReturn":{"raw":-0.041370034,"fmt":"-4.14%"},"ytdReturnPct":{"raw":-0.06962967,"fmt":"-6.96%"},"oneYearTotalReturn":{"raw":0.118655056,"fmt":"11.87%"},"twoYearTotalReturn":{"raw":0.21346326,"fmt":"21.35%"},"threeYearTotalReturn":{"raw":0.6012073,"fmt":"60.12%"},"fiveYearTotalReturn":{"raw":0.60241187,"fmt":"60.24%"},"tenYearTotalReturn":{"raw":2.1282113,"fmt":"212.82%"},"maxReturn":{"raw":359.63702,"fmt":"35,963.70%"}}},"defaultKeyStatistics":{"maxAge":1,"priceHint":{"raw":2,"fmt":"2","longFmt":"2"},"enterpriseValue":{"raw":840270720,"fmt":"840.27M","longFmt":"840,270,720"},"forwardPE":{"raw":15.092701,"fmt":"15.09"},"profitMargins":{"raw":0.06732,"fmt":"6.73%"},"floatShares":{"raw":9298104,"fmt":"9.3M","longFmt":"9,298,104"},"sharesOutstanding":{"raw":9574225,"fmt":"9.57M","longFmt":"9,574,225"},"sharesShort":{"raw":149704,"fmt":"149.7k","longFmt":"149,704"},"sharesShortPriorMonth":{"raw":131841,"fmt":"131.84k","longFmt":"131,841"},"sharesShortPreviousMonthDate":{"raw":1770940800,"fmt":"2026-02-13"},"dateShortInterest":{"raw":1773360000,"fmt":"2026-03-13"},"sharesPercentSharesOut":{"raw":0.0156,"fmt":"1.56%"},"heldPercentInsiders":{"raw":0.0301,"fmt":"3.01%"},"heldPercentInstitutions":{"raw":0.86264,"fmt":"86.26%"},"shortRatio":{"raw":1.6,"fmt":"1.6"},"shortPercentOfFloat":{"raw":0.0183,"fmt":"1.83%"},"beta":{"raw":0.941,"fmt":"0.94"},"impliedSharesOutstanding":{"raw":9609651,"fmt":"9.61M","longFmt":"9,609,651"},"morningStarOverallRating":{},"morningStarRiskRating":{},"category":null,"bookValue":{"raw":41.175,"fmt":"41.17"},"priceToBook":{"raw":1.8584092,"fmt":"1.86"},"annualReportExpenseRatio":{},"ytdReturn":{},"qtdReturn":{},"beta3Year":{},"totalAssets":{},"yield":{},"fundFamily":null,"fundInceptionDate":{},"legalType":null,"threeYearAverageReturn":{},"fiveYearAverageReturn":{},"priceToSalesTrailing12Months":{},"lastFiscalYearEnd":{"raw":1767139200,"fmt":"2025-12-31"},"nextFiscalYearEnd":{"raw":1798675200,"fmt":"2026-12-31"},"mostRecentQuarter":{"raw":1767139200,"fmt":"2025-12-31"},"earningsQuarterlyGrowth":{"raw":-0.121,"fmt":"-12.10%"},"revenueQuarterlyGrowth":{},"netIncomeToCommon":{"raw":35411000,"fmt":"35.41M","longFmt":"35,411,000"},"trailingEps":{"raw":3.56,"fmt":"3.56"},"forwardEps":{"raw":5.07,"fmt":"5.07"},"pegRatio":{},"lastSplitFactor":null,"lastSplitDate":{},"enterpriseToRevenue":{"raw":1.597,"fmt":"1.60"},"enterpriseToEbitda":{"raw":12.196,"fmt":"12.20"},"52WeekChange":{"raw":0.6117567,"fmt":"61.18%"},"SandP52WeekChange":{"raw":0.12811458,"fmt":"12.81%"},"lastDividendValue":{},"lastDividendDate":{},"lastCapGain":{},"annualHoldingsTurnover":{},"latestFundingDate":{},"latestAmountRaised":{},"latestImpliedValuation":{},"latestShareClass":null,"leadInvestor":null,"fundingToDate":{},"totalFundingRounds":{}},"financialsTemplate":{"code":"N","maxAge":1},"earningsGaap":{"maxAge":86400,"earningsChart":{"quarterly":[{"date":"1Q2025","actual":{"raw":0.39,"fmt":"0.39"},"estimate":{"raw":0.53333,"fmt":"0.53"},"fiscalQuarter":"1Q2025","calendarQuarter":"1Q2025","difference":"-0.14","surprisePct":"-26.87","periodEndDate":{"raw":1743379200,"fmt":"2025-03-31"},"reportedDate":{"raw":1746044100,"fmt":"2025-04-30"}},{"date":"2Q2025","actual":{"raw":0.91,"fmt":"0.91"},"estimate":{"raw":0.71667,"fmt":"0.72"},"fiscalQuarter":"2Q2025","calendarQuarter":"2Q2025","difference":"0.19","surprisePct":"26.98","periodEndDate":{"raw":1751241600,"fmt":"2025-06-30"},"reportedDate":{"raw":1754598144,"fmt":"2025-08-07"}},{"date":"3Q2025","actual":{"raw":1.38,"fmt":"1.38"},"estimate":{"raw":1.01667,"fmt":"1.02"},"fiscalQuarter":"3Q2025","calendarQuarter":"3Q2025","difference":"0.36","surprisePct":"35.74","periodEndDate":{"raw":1759190400,"fmt":"2025-09-30"},"reportedDate":{"raw":1761769369,"fmt":"2025-10-29"}},{"date":"4Q2025","actual":{"raw":0.91,"fmt":"0.91"},"estimate":{"raw":0.635,"fmt":"0.63"},"fiscalQuarter":"4Q2025","calendarQuarter":"4Q2025","difference":"0.28","surprisePct":"43.31","periodEndDate":{"raw":1767139200,"fmt":"2025-12-31"},"reportedDate":{"raw":1772054306,"fmt":"2026-02-25"}}],"currentQuarterEstimate":{"raw":0.56,"fmt":"0.56"},"currentQuarterEstimateDate":"1Q","currentCalendarQuarter":"1Q2026","currentQuarterEstimateYear":2026,"currentFiscalQuarter":"1Q2026","currentPeriodEndDate":{"raw":1774915200,"fmt":"2026-03-31"},"earningsDate":[{"raw":1777492800,"fmt":"2026-04-29"}],"isEarningsDateEstimate":true},"financialsChart":{"yearly":[{"date":2022,"revenue":{"raw":457665000,"fmt":"457.67M","longFmt":"457,665,000"},"earnings":{"raw":31149000,"fmt":"31.15M","longFmt":"31,149,000"}},{"date":2023,"revenue":{"raw":444355000,"fmt":"444.36M","longFmt":"444,355,000"},"earnings":{"raw":21072000,"fmt":"21.07M","longFmt":"21,072,000"}},{"date":2024,"revenue":{"raw":492548000,"fmt":"492.55M","longFmt":"492,548,000"},"earnings":{"raw":34206000,"fmt":"34.21M","longFmt":"34,206,000"}},{"date":2025,"revenue":{"raw":526003000,"fmt":"526M","longFmt":"526,003,000"},"earnings":{"raw":35411000,"fmt":"35.41M","longFmt":"35,411,000"}}],"quarterly":[{"date":"1Q2025","fiscalQuarter":"1Q2025","revenue":{"raw":116115000,"fmt":"116.11M","longFmt":"116,115,000"},"earnings":{"raw":3964000,"fmt":"3.96M","longFmt":"3,964,000"}},{"date":"2Q2025","fiscalQuarter":"2Q2025","revenue":{"raw":133182000,"fmt":"133.18M","longFmt":"133,182,000"},"earnings":{"raw":9063000,"fmt":"9.06M","longFmt":"9,063,000"}},{"date":"3Q2025","fiscalQuarter":"3Q2025","revenue":{"raw":151067000,"fmt":"151.07M","longFmt":"151,067,000"},"earnings":{"raw":13505000,"fmt":"13.51M","longFmt":"13,505,000"}},{"date":"4Q2025","fiscalQuarter":"4Q2025","revenue":{"raw":125639000,"fmt":"125.64M","longFmt":"125,639,000"},"earnings":{"raw":8879000,"fmt":"8.88M","longFmt":"8,879,000"}}]},"financialCurrency":"USD","defaultMethodology":"nongaap"},"earningsCallTranscripts":{"transcripts":[{"title":"NWPX Q4 FY2025 earnings call transcript","fiscalYear":2025,"fiscalPeriod":"Q4","date":1772118000,"updated":1772128140,"transcriptId":2938291,"type":"IN_HOUSE","eventId":406120,"eventType":"Earnings call","url":"https://finance.yahoo.com/quote/NWPX/earnings/NWPX-Q4-2025-earnings_call-406120.html","s3Url":"s3://890742573995-market-data-service-prod-us-east-1/shared/transcripts/2026/2/26/2938291.json","maxAge":1},{"title":"NWPX Q3 FY2025 earnings call transcript","fiscalYear":2025,"fiscalPeriod":"Q3","date":1761832800,"updated":1762159462,"transcriptId":2225918,"type":"IN_HOUSE","eventId":373128,"eventType":"Earnings Call","url":"https://finance.yahoo.com/quote/NWPX/earnings/NWPX-Q3-2025-earnings_call-373128.html","s3Url":"s3://890742573995-market-data-service-prod-us-east-1/shared/transcripts/2025/10/30/2225918.json","maxAge":1},{"title":"NWPX Q2 FY2025 earnings call transcript","fiscalYear":2025,"fiscalPeriod":"Q2","date":1754661600,"updated":1763943417,"transcriptId":2325458,"type":"IN_HOUSE","eventId":340920,"eventType":"Earnings Call","url":"https://finance.yahoo.com/quote/NWPX/earnings/NWPX-Q2-2025-earnings_call-340920.html","s3Url":"s3://890742573995-market-data-service-prod-us-east-1/shared/transcripts/2025/8/8/2325458.json","maxAge":1},{"title":"NWPX Q1 FY2025 earnings call transcript","fiscalYear":2025,"fiscalPeriod":"Q1","date":1746108000,"updated":1766601930,"transcriptId":2537283,"type":"IN_HOUSE","eventId":320265,"eventType":"Earnings Call","url":"https://finance.yahoo.com/quote/NWPX/earnings/NWPX-Q1-2025-earnings_call-320265.html","s3Url":"s3://890742573995-market-data-service-prod-us-east-1/shared/transcripts/2025/5/1/2537283.json","maxAge":1},{"title":"NWPX Q4 FY2024 earnings call transcript","fiscalYear":2024,"fiscalPeriod":"Q4","date":1740668400,"updated":1766085546,"transcriptId":2523579,"type":"IN_HOUSE","eventId":246632,"eventType":"Earnings Call","url":"https://finance.yahoo.com/quote/NWPX/earnings/NWPX-Q4-2024-earnings_call-246632.html","s3Url":"s3://890742573995-market-data-service-prod-us-east-1/shared/transcripts/2025/2/27/2523579.json","maxAge":1},{"title":"NWPX Q3 FY2024 earnings call transcript","fiscalYear":2024,"fiscalPeriod":"Q3","date":1730383200,"updated":1768649463,"transcriptId":2615490,"type":"IN_HOUSE","eventId":217936,"eventType":"Earnings call","url":"https://finance.yahoo.com/quote/NWPX/earnings/NWPX-Q3-2024-earnings_call-217936.html","s3Url":"s3://890742573995-market-data-service-prod-us-east-1/shared/transcripts/2024/10/31/2615490.json","maxAge":1},{"title":"NWPX Q2 FY2024 earnings call transcript","fiscalYear":2024,"fiscalPeriod":"Q2","date":1722520800,"updated":1772063700,"transcriptId":2725823,"type":"IN_HOUSE","eventId":190250,"eventType":"Earnings call","url":"https://finance.yahoo.com/quote/NWPX/earnings/NWPX-Q2-2024-earnings_call-190250.html","s3Url":"s3://890742573995-market-data-service-prod-us-east-1/shared/transcripts/2024/8/1/2725823.json","maxAge":1},{"title":"NWPX Q1 FY2024 earnings call transcript","fiscalYear":2024,"fiscalPeriod":"Q1","date":1714658400,"updated":1772062975,"transcriptId":2745319,"type":"IN_HOUSE","eventId":173841,"eventType":"Earnings call","url":"https://finance.yahoo.com/quote/NWPX/earnings/NWPX-Q1-2024-earnings_call-173841.html","s3Url":"s3://890742573995-market-data-service-prod-us-east-1/shared/transcripts/2024/5/2/2745319.json","maxAge":1},{"title":"NWPX Q4 FY2023 earnings call transcript","fiscalYear":2023,"fiscalPeriod":"Q4","date":1709650800,"updated":1772060570,"transcriptId":2780366,"type":"IN_HOUSE","eventId":125252,"eventType":"Earnings call","url":"https://finance.yahoo.com/quote/NWPX/earnings/NWPX-Q4-2023-earnings_call-125252.html","s3Url":"s3://890742573995-market-data-service-prod-us-east-1/shared/transcripts/2024/3/5/2780366.json","maxAge":1},{"title":"NWPX Q3 FY2023 earnings call transcript","fiscalYear":2023,"fiscalPeriod":"Q3","date":1699020000,"updated":1772059549,"transcriptId":2851786,"type":"IN_HOUSE","eventId":86863,"eventType":"Earnings call","url":"https://finance.yahoo.com/quote/NWPX/earnings/NWPX-Q3-2023-earnings_call-86863.html","s3Url":"s3://890742573995-market-data-service-prod-us-east-1/shared/transcripts/2023/11/3/2851786.json","maxAge":1},{"title":"NWPX Q2 FY2023 earnings call transcript","fiscalYear":2023,"fiscalPeriod":"Q2","date":1691071200,"updated":1772063551,"transcriptId":2905727,"type":"IN_HOUSE","eventId":66936,"eventType":"Earnings call","url":"https://finance.yahoo.com/quote/NWPX/earnings/NWPX-Q2-2023-earnings_call-66936.html","s3Url":"s3://890742573995-market-data-service-prod-us-east-1/shared/transcripts/2023/8/3/2905727.json","maxAge":1},{"title":"NWPX Q1 FY2023 earnings call transcript","fiscalYear":2023,"fiscalPeriod":"Q1","date":1683208800,"updated":1773016527,"transcriptId":2964405,"type":"IN_HOUSE","eventId":59354,"eventType":"Earnings call","url":"https://finance.yahoo.com/quote/NWPX/earnings/NWPX-Q1-2023-earnings_call-59354.html","s3Url":"s3://890742573995-market-data-service-prod-us-east-1/shared/transcripts/2023/5/4/2964405.json","maxAge":1},{"title":"NWPX Q4 FY2022 earnings call transcript","fiscalYear":2022,"fiscalPeriod":"Q4","date":1678975200,"updated":1772614182,"transcriptId":2989247,"type":"IN_HOUSE","eventId":44492,"eventType":"Earnings call","url":"https://finance.yahoo.com/quote/NWPX/earnings/NWPX-Q4-2022-earnings_call-44492.html","s3Url":"s3://890742573995-market-data-service-prod-us-east-1/shared/transcripts/2023/3/16/2989247.json","maxAge":1},{"title":"NWPX Q3 FY2022 earnings call transcript","fiscalYear":2022,"fiscalPeriod":"Q3","date":1667998800,"updated":1773289430,"transcriptId":3054927,"type":"IN_HOUSE","eventId":41471,"eventType":"Earnings call","url":"https://finance.yahoo.com/quote/NWPX/earnings/NWPX-Q3-2022-earnings_call-41471.html","s3Url":"s3://890742573995-market-data-service-prod-us-east-1/shared/transcripts/2022/11/9/3054927.json","maxAge":1},{"title":"NWPX Q2 FY2022 earnings call transcript","fiscalYear":2022,"fiscalPeriod":"Q2","date":1659963600,"updated":1773656541,"transcriptId":3092187,"type":"IN_HOUSE","eventId":32209,"eventType":"Earnings call","url":"https://finance.yahoo.com/quote/NWPX/earnings/NWPX-Q2-2022-earnings_call-32209.html","s3Url":"s3://890742573995-market-data-service-prod-us-east-1/shared/transcripts/2022/8/8/3092187.json","maxAge":1}],"maxAge":86400},"summaryDetail":{"maxAge":1,"priceHint":{"raw":2,"fmt":"2","longFmt":"2"},"previousClose":{"raw":76.78,"fmt":"76.78"},"open":{"raw":76.33,"fmt":"76.33"},"dayLow":{"raw":75.34,"fmt":"75.34"},"dayHigh":{"raw":77.55,"fmt":"77.55"},"regularMarketPreviousClose":{"raw":76.78,"fmt":"76.78"},"regularMarketOpen":{"raw":76.33,"fmt":"76.33"},"regularMarketDayLow":{"raw":75.34,"fmt":"75.34"},"regularMarketDayHigh":{"raw":77.55,"fmt":"77.55"},"dividendRate":{},"dividendYield":{},"exDividendDate":{},"payoutRatio":{"raw":0.0,"fmt":"0.00%"},"fiveYearAvgDividendYield":{},"beta":{"raw":0.941,"fmt":"0.94"},"trailingPE":{"raw":21.49438,"fmt":"21.49"},"forwardPE":{"raw":15.092701,"fmt":"15.09"},"volume":{"raw":74493,"fmt":"74.49k","longFmt":"74,493"},"regularMarketVolume":{"raw":74493,"fmt":"74.49k","longFmt":"74,493"},"averageVolume":{"raw":96272,"fmt":"96.27k","longFmt":"96,272"},"averageVolume10days":{"raw":162230,"fmt":"162.23k","longFmt":"162,230"},"averageDailyVolume10Day":{"raw":162230,"fmt":"162.23k","longFmt":"162,230"},"bid":{"raw":76.23,"fmt":"76.23"},"ask":{"raw":77.01,"fmt":"77.01"},"bidSize":{"raw":100,"fmt":"100","longFmt":"100"},"askSize":{"raw":100,"fmt":"100","longFmt":"100"},"marketCap":{"raw":735330432,"fmt":"735.33M","longFmt":"735,330,432"},"nonDilutedMarketCap":{"raw":677663645,"fmt":"677.66M","longFmt":"677,663,645"},"yield":{},"ytdReturn":{},"qtdReturn":{},"totalAssets":{},"expireDate":{},"strikePrice":{},"openInterest":{},"fiftyTwoWeekLow":{"raw":36.97,"fmt":"36.97"},"fiftyTwoWeekHigh":{"raw":83.12,"fmt":"83.12"},"allTimeHigh":{"raw":83.12,"fmt":"83.12"},"allTimeLow":{"raw":6.53125,"fmt":"6.53"},"priceToSalesTrailing12Months":{"raw":1.3979586,"fmt":"1.40"},"fiftyDayAverage":{"raw":72.1536,"fmt":"72.15"},"twoHundredDayAverage":{"raw":56.6171,"fmt":"56.62"},"trailingAnnualDividendRate":{"raw":0.0,"fmt":"0.00"},"trailingAnnualDividendYield":{"raw":0.0,"fmt":"0.00%"},"navPrice":{},"currency":"USD","fromCurrency":null,"toCurrency":null,"lastMarket":null,"coinMarketCapLink":null,"volume24Hr":{},"volumeAllCurrencies":{},"circulatingSupply":{},"algorithm":null,"maxSupply":{},"totalSupply":{},"startDate":{},"tradeable":false,"fullyDilutedValue":{},"volume24HrMarketCapPercent":{}},"calendarEvents":{"maxAge":1,"earnings":{"earningsDate":[{"raw":1777492800,"fmt":"2026-04-29"}],"earningsCallDate":[{"raw":1772118000,"fmt":"2026-02-26"}],"isEarningsDateEstimate":true,"earningsAverage":{"raw":0.56,"fmt":"0.56"},"earningsLow":{"raw":0.56,"fmt":"0.56"},"earningsHigh":{"raw":0.56,"fmt":"0.56"},"revenueAverage":{"raw":125100000,"fmt":"125.1M","longFmt":"125,100,000"},"revenueLow":{"raw":120800000,"fmt":"120.8M","longFmt":"120,800,000"},"revenueHigh":{"raw":129400000,"fmt":"129.4M","longFmt":"129,400,000"}},"exDividendDate":{},"dividendDate":{}},"upgradeDowngradeHistory":{"history":[{"epochGradeDate":1772481063,"firm":"DA Davidson","toGrade":"Buy","fromGrade":"Buy","action":"main","priceTargetAction":"Raises","currentPriceTarget":90.0,"priorPriceTarget":70.0},{"epochGradeDate":1761919696,"firm":"DA Davidson","toGrade":"Buy","fromGrade":"Buy","action":"main","priceTargetAction":"Raises","currentPriceTarget":70.0,"priorPriceTarget":60.0},{"epochGradeDate":1735913739,"firm":"Northland Capital Markets","toGrade":"Market Perform","fromGrade":"Market Perform","action":"main","priceTargetAction":"Raises","currentPriceTarget":55.0,"priorPriceTarget":50.0},{"epochGradeDate":1730486707,"firm":"Northland Capital Markets","toGrade":"Market Perform","fromGrade":"Outperform","action":"down","priceTargetAction":"Maintains","currentPriceTarget":50.0,"priorPriceTarget":50.0},{"epochGradeDate":1722621682,"firm":"Northland Capital Markets","toGrade":"Outperform","fromGrade":"Outperform","action":"main","priceTargetAction":"Raises","currentPriceTarget":50.0,"priorPriceTarget":40.0},{"epochGradeDate":1709733020,"firm":"DA Davidson","toGrade":"Buy","fromGrade":"Buy","action":"main","priceTargetAction":"Raises","currentPriceTarget":40.0,"priorPriceTarget":37.0},{"epochGradeDate":1674479293,"firm":"Northland Capital Markets","toGrade":"Outperform","fromGrade":"","action":"init","priceTargetAction":"Announces","currentPriceTarget":55.0,"priorPriceTarget":0.0},{"epochGradeDate":1620220759,"firm":"Northland Capital Markets","toGrade":"Outperform","fromGrade":"","action":"main","priceTargetAction":"Raises","currentPriceTarget":38.0,"priorPriceTarget":35.0},{"epochGradeDate":1572611473,"firm":"DA Davidson","toGrade":"Buy","fromGrade":"","action":"main","priceTargetAction":"Raises","currentPriceTarget":37.0,"priorPriceTarget":30.0},{"epochGradeDate":1569506567,"firm":"Northland Capital Markets","toGrade":"Outperform","fromGrade":"","action":"init","priceTargetAction":"Announces","currentPriceTarget":35.0,"priorPriceTarget":0.0},{"epochGradeDate":1454578270,"firm":"Jefferies","toGrade":"Hold","fromGrade":"","action":"main","priceTargetAction":"Lowers","currentPriceTarget":10.0,"priorPriceTarget":16.0},{"epochGradeDate":1431003600,"firm":"Jefferies","toGrade":"Hold","fromGrade":"","action":"main","priceTargetAction":"Lowers","currentPriceTarget":23.0,"priorPriceTarget":24.0},{"epochGradeDate":1421071200,"firm":"Jefferies","toGrade":"Hold","fromGrade":"","action":"main","priceTargetAction":"Lowers","currentPriceTarget":27.0,"priorPriceTarget":31.0},{"epochGradeDate":1418220000,"firm":"Jefferies","toGrade":"Hold","fromGrade":"","action":"main","priceTargetAction":"Lowers","currentPriceTarget":31.0,"priorPriceTarget":33.0},{"epochGradeDate":1413549000,"firm":"DA Davidson","toGrade":"Buy","fromGrade":"","action":"main","priceTargetAction":"Announces","currentPriceTarget":48.0,"priorPriceTarget":0.0},{"epochGradeDate":1395189612,"firm":"Jefferies","toGrade":"Hold","fromGrade":"","action":"main","priceTargetAction":"Lowers","currentPriceTarget":35.0,"priorPriceTarget":39.0},{"epochGradeDate":1383760366,"firm":"Jefferies","toGrade":"Hold","fromGrade":"","action":"main","priceTargetAction":"Raises","currentPriceTarget":33.0,"priorPriceTarget":30.0},{"epochGradeDate":1370605816,"firm":"Jefferies","toGrade":"Hold","fromGrade":"","action":"main","priceTargetAction":"Lowers","currentPriceTarget":29.0,"priorPriceTarget":30.0},{"epochGradeDate":1363603441,"firm":"Jefferies","toGrade":"Hold","fromGrade":"","action":"main","priceTargetAction":"Raises","currentPriceTarget":30.0,"priorPriceTarget":22.0},{"epochGradeDate":1359549553,"firm":"Jefferies","toGrade":"Hold","fromGrade":"","action":"main","priceTargetAction":"Lowers","currentPriceTarget":22.0,"priorPriceTarget":23.0},{"epochGradeDate":1352723340,"firm":"Jefferies","toGrade":"Hold","fromGrade":"","action":"main","priceTargetAction":"Lowers","currentPriceTarget":23.0,"priorPriceTarget":27.0},{"epochGradeDate":1352459100,"firm":"Deutsche Bank","toGrade":"Hold","fromGrade":"","action":"init","priceTargetAction":"Announces","currentPriceTarget":19.0,"priorPriceTarget":0.0},{"epochGradeDate":1346343180,"firm":"Barclays","toGrade":"Overweight","fromGrade":"Equal-Weight","action":"up","priceTargetAction":"Maintains","currentPriceTarget":18.0,"priorPriceTarget":0.0},{"epochGradeDate":1344365580,"firm":"JP Morgan","toGrade":"Neutral","fromGrade":"","action":"main","priceTargetAction":"Lowers","currentPriceTarget":15.5,"priorPriceTarget":18.0},{"epochGradeDate":1341228240,"firm":"Barclays","toGrade":"Equal-Weight","fromGrade":"Overweight","action":"down","priceTargetAction":"","currentPriceTarget":0.0,"priorPriceTarget":0.0},{"epochGradeDate":1337162880,"firm":"Jefferies","toGrade":"Hold","fromGrade":"","action":"main","priceTargetAction":"Raises","currentPriceTarget":23.0,"priorPriceTarget":22.0}],"maxAge":86400},"pageViews":{"shortTermTrend":"DOWN","midTermTrend":"UP","longTermTrend":"UP","maxAge":1},"price":{"maxAge":1,"preMarketChange":{},"preMarketPrice":{},"preMarketSource":"FREE_REALTIME","postMarketChangePercent":{"raw":0.0,"fmt":"0.00%"},"postMarketChange":{"raw":0.0,"fmt":"0.00"},"postMarketTime":1774642204,"postMarketPrice":{"raw":76.52,"fmt":"76.52"},"postMarketSource":"FREE_REALTIME","regularMarketChangePercent":{"raw":-0.0033863264,"fmt":"-0.34%"},"regularMarketChange":{"raw":-0.26000214,"fmt":"-0.26"},"regularMarketTime":1774641600,"priceHint":{"raw":2,"fmt":"2","longFmt":"2"},"regularMarketPrice":{"raw":76.52,"fmt":"76.52"},"regularMarketDayHigh":{"raw":77.55,"fmt":"77.55"},"regularMarketDayLow":{"raw":75.34,"fmt":"75.34"},"regularMarketVolume":{"raw":74493,"fmt":"74.49k","longFmt":"74,493.00"},"averageDailyVolume10Day":{"raw":162230,"fmt":"162.23k","longFmt":"162,230"},"averageDailyVolume3Month":{"raw":96272,"fmt":"96.27k","longFmt":"96,272"},"regularMarketPreviousClose":{"raw":76.78,"fmt":"76.78"},"regularMarketSource":"FREE_REALTIME","regularMarketOpen":{"raw":76.33,"fmt":"76.33"},"strikePrice":{},"openInterest":{},"exchange":"NMS","exchangeName":"NasdaqGS","exchangeDataDelayedBy":0,"marketState":"CLOSED","quoteType":"EQUITY","symbol":"NWPX","underlyingSymbol":null,"shortName":"NWPX Infrastructure, Inc.","longName":"NWPX Infrastructure, Inc.","currency":"USD","quoteSourceName":"Nasdaq Real Time Price","currencySymbol":"$","fromCurrency":null,"toCurrency":null,"lastMarket":null,"volume24Hr":{},"volumeAllCurrencies":{},"circulatingSupply":{},"marketCap":{"raw":735330432,"fmt":"735.33M","longFmt":"735,330,432.00"}},"earningsNonGaap":{"maxAge":86400,"earningsChart":{"quarterly":[{"date":"1Q2025","actual":{"raw":0.39,"fmt":"0.39"},"estimate":{"raw":0.53333,"fmt":"0.53"},"fiscalQuarter":"1Q2025","calendarQuarter":"1Q2025","difference":"-0.14","surprisePct":"-26.87","periodEndDate":{"raw":1743379200,"fmt":"2025-03-31"},"reportedDate":{"raw":1746044100,"fmt":"2025-04-30"}},{"date":"2Q2025","actual":{"raw":0.91,"fmt":"0.91"},"estimate":{"raw":0.71667,"fmt":"0.72"},"fiscalQuarter":"2Q2025","calendarQuarter":"2Q2025","difference":"0.19","surprisePct":"26.98","periodEndDate":{"raw":1751241600,"fmt":"2025-06-30"},"reportedDate":{"raw":1754598144,"fmt":"2025-08-07"}},{"date":"3Q2025","actual":{"raw":1.38,"fmt":"1.38"},"estimate":{"raw":1.01667,"fmt":"1.02"},"fiscalQuarter":"3Q2025","calendarQuarter":"3Q2025","difference":"0.36","surprisePct":"35.74","periodEndDate":{"raw":1759190400,"fmt":"2025-09-30"},"reportedDate":{"raw":1761769369,"fmt":"2025-10-29"}},{"date":"4Q2025","actual":{"raw":0.93,"fmt":"0.93"},"estimate":{"raw":0.635,"fmt":"0.63"},"fiscalQuarter":"4Q2025","calendarQuarter":"4Q2025","difference":"0.3","surprisePct":"46.46","periodEndDate":{"raw":1767139200,"fmt":"2025-12-31"},"reportedDate":{"raw":1772054306,"fmt":"2026-02-25"}}],"currentQuarterEstimate":{"raw":0.56,"fmt":"0.56"},"currentQuarterEstimateDate":"1Q","currentCalendarQuarter":"1Q2026","currentQuarterEstimateYear":2026,"currentFiscalQuarter":"1Q2026","currentPeriodEndDate":{"raw":1774915200,"fmt":"2026-03-31"},"earningsDate":[{"raw":1777492800,"fmt":"2026-04-29"}],"isEarningsDateEstimate":true},"financialsChart":{"yearly":[{"date":2022,"revenue":{"raw":457665000,"fmt":"457.67M","longFmt":"457,665,000"},"earnings":{"raw":33588000,"fmt":"33.59M","longFmt":"33,588,000"}},{"date":2023,"revenue":{"raw":444355000,"fmt":"444.36M","longFmt":"444,355,000"},"earnings":{"raw":21072000,"fmt":"21.07M","longFmt":"21,072,000"}},{"date":2024,"revenue":{"raw":492548000,"fmt":"492.55M","longFmt":"492,548,000"},"earnings":{"raw":31900000,"fmt":"31.9M","longFmt":"31,900,000"}},{"date":2025,"revenue":{"raw":526003000,"fmt":"526M","longFmt":"526,003,000"},"earnings":{"raw":35649000,"fmt":"35.65M","longFmt":"35,649,000"}}],"quarterly":[{"date":"1Q2025","fiscalQuarter":"1Q2025","revenue":{"raw":116115000,"fmt":"116.11M","longFmt":"116,115,000"},"earnings":{"raw":3964000,"fmt":"3.96M","longFmt":"3,964,000"}},{"date":"2Q2025","fiscalQuarter":"2Q2025","revenue":{"raw":133182000,"fmt":"133.18M","longFmt":"133,182,000"},"earnings":{"raw":9063000,"fmt":"9.06M","longFmt":"9,063,000"}},{"date":"3Q2025","fiscalQuarter":"3Q2025","revenue":{"raw":151067000,"fmt":"151.07M","longFmt":"151,067,000"},"earnings":{"raw":13505000,"fmt":"13.51M","longFmt":"13,505,000"}},{"date":"4Q2025","fiscalQuarter":"4Q2025","revenue":{"raw":125639000,"fmt":"125.64M","longFmt":"125,639,000"},"earnings":{"raw":9117000,"fmt":"9.12M","longFmt":"9,117,000"}}]},"financialCurrency":"USD","defaultMethodology":"nongaap"},"corporateActions":{"corporateActions":[],"maxAge":1},"financialData":{"maxAge":86400,"currentPrice":{"raw":76.52,"fmt":"76.52"},"targetHighPrice":{"raw":90.0,"fmt":"90.00"},"targetLowPrice":{"raw":80.0,"fmt":"80.00"},"targetMeanPrice":{"raw":86.0,"fmt":"86.00"},"targetMedianPrice":{"raw":88.0,"fmt":"88.00"},"recommendationMean":{},"recommendationKey":"none","numberOfAnalystOpinions":{"raw":3,"fmt":"3","longFmt":"3"},"totalCash":{"raw":2273000,"fmt":"2.27M","longFmt":"2,273,000"},"totalCashPerShare":{"raw":0.237,"fmt":"0.24"},"ebitda":{"raw":68899000,"fmt":"68.9M","longFmt":"68,899,000"},"totalDebt":{"raw":109924000,"fmt":"109.92M","longFmt":"109,924,000"},"quickRatio":{"raw":2.577,"fmt":"2.58"},"currentRatio":{"raw":3.778,"fmt":"3.78"},"totalRevenue":{"raw":526003008,"fmt":"526M","longFmt":"526,003,008"},"debtToEquity":{"raw":27.844,"fmt":"27.84%"},"revenuePerShare":{"raw":53.817,"fmt":"53.82"},"returnOnAssets":{"raw":0.05288,"fmt":"5.29%"},"returnOnEquity":{"raw":0.09212,"fmt":"9.21%"},"grossProfits":{"raw":103637000,"fmt":"103.64M","longFmt":"103,637,000"},"freeCashflow":{"raw":31998500,"fmt":"32M","longFmt":"31,998,500"},"operatingCashflow":{"raw":67283000,"fmt":"67.28M","longFmt":"67,283,000"},"earningsGrowth":{"raw":-0.097,"fmt":"-9.70%"},"revenueGrowth":{"raw":0.05,"fmt":"5.00%"},"grossMargins":{"raw":0.19703,"fmt":"19.70%"},"ebitdaMargins":{"raw":0.13099,"fmt":"13.10%"},"operatingMargins":{"raw":0.092480004,"fmt":"9.25%"},"profitMargins":{"raw":0.06732,"fmt":"6.73%"},"financialCurrency":"USD"}}],"error":null}}