Get Complete Stock Quote
Google Finance stock quote API
Fetch complete Google Finance quote data as JSON
This endpoint is for developers who need Google Finance quote API documentation, stock quote data as JSON, or a ticker enrichment endpoint for dashboards, portfolio tools, research workflows, watchlists, and market monitoring products.
Use the Google Finance quote API when you need a single ticker-level response for a stock, ETF, or other Google Finance instrument. The endpoint returns current price fields, market status, previous close, day range, year range, market cap, P/E ratio, dividend yield, company profile details, financial statement rows, related news, and discovery tickers as structured JSON.
This page is built for developers comparing stock quote APIs, finance quote JSON endpoints, and Google Finance data extraction workflows. Start with Search Financial Instruments when you only know a company name, then call this quote endpoint with the resolved symbol and exchange. Pair quote data with Historical Data for backtests, Intraday Graph Data for charting, and Markets Overview for broader market context.
Run this endpoint
Endpoint
https://scrappa.co/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ
https://scrappa.co/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ
x-api-key
symbol
= AAPL
{
"quote": {
"summary": {
"name": "Apple Inc",
"symbol": "AAPL",
"exchange": "NASDAQ",
"current_price": "255.78",
"price_change": "-5.95",
"percent_change": "-2.27%",
"currency": "USD",
"market": {
"trading": "Closed",
"price": "255.30",
"extracted_price": 255.3,
...
Parameters
Start with the required fields, then add optional filters only when your use case needs them.
Runnable path
1 required parameter needed before sending a request.
4 optional filters available.
string
Required
Stock symbol (e.g., AAPL)
AAPL
string
Optional
Exchange code (e.g., NASDAQ). If not provided, the API will attempt to auto-resolve via an internal search. This adds latency and may fail for less common symbols.
NASDAQ
string
Optional
Filter financials by period: quarterly or annual (default: returns visible data, typically quarterly)
example
string
Optional
Language code (default: en)
en
string
Optional
Country code (default: us)
us
Request Examples
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrappa.co/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: YOUR_API_KEY_HERE"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
<?php
use Illuminate\Support\Facades\Http;
$response = Http::timeout(30)
->withHeaders(['x-api-key' => 'YOUR_API_KEY_HERE'])
->get('https://scrappa.co/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ');
if ($response->successful()) {
echo $response->body();
} else {
echo "Error: " . $response->status();
}
const options = {
method: 'GET',
headers: {
'x-api-key': 'YOUR_API_KEY_HERE'
}
};
fetch('https://scrappa.co/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ', options)
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.text();
})
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
const axios = require('axios');
const options = {
method: 'GET',
url: 'https://scrappa.co/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ',
headers: {
x-api-key: 'YOUR_API_KEY_HERE',
}
};
try {
const response = await axios(options);
console.log(response.data);
} catch (error) {
console.error('Error:', error.message);
}
require 'net/http'
require 'uri'
uri = URI.parse("https://scrappa.co/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
request = Net::HTTP::Get.new(uri.request_uri)
request['x-api-key'] = 'YOUR_API_KEY_HERE'
begin
response = http.request(request)
puts response.body
rescue => e
puts "Error: #{e.message}"
end
import http.client
import json
conn = http.client.HTTPSConnection("scrappa.co")
headers = {
'x-api-key': 'YOUR_API_KEY_HERE',
}
try:
conn.request("GET", "/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
except Exception as e:
print(f"Error: {e}")
finally:
conn.close()
import requests
headers = {
'x-api-key': 'YOUR_API_KEY_HERE',
}
try:
response = requests.get('https://scrappa.co/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ', headers=headers)
response.raise_for_status()
print(response.text)
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
public class ApiExample {
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://scrappa.co/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ")
.addHeader("x-api-key", "YOUR_API_KEY_HERE")
.build();
try (Response response = client.newCall(request).execute()) {
if (response.isSuccessful()) {
System.out.println(response.body().string());
} else {
System.out.println("Error: " + response.code());
}
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://scrappa.co/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ", nil)
if err != nil {
fmt.Println("Error creating request:", err)
return
}
req.Header.Set("x-api-key", "YOUR_API_KEY_HERE")
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error making request:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
fmt.Println(string(body))
}
#!/bin/bash
curl -X GET \
-H "x-api-key: YOUR_API_KEY_HERE" \
"https://scrappa.co/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ"
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY_HERE");
try
{
var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, "https://scrappa.co/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ"));
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
import axios from 'axios';
async function run(): Promise<void> {
try {
const response = await axios({
method: 'GET',
url: 'https://scrappa.co/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ',
headers: {
'x-api-key': 'YOUR_API_KEY_HERE',
},
});
console.log(response.data);
} catch (error) {
console.error('Error:', error);
}
}
void run();
use reqwest::Client;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new();
let response = client
.get("https://scrappa.co/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ")
.header("x-api-key", "YOUR_API_KEY_HERE")
.send()
.await?;
println!("{}", response.text().await?);
Ok(())
}
Response Schema
{
"quote": {
"summary": {
"name": "Apple Inc",
"symbol": "AAPL",
"exchange": "NASDAQ",
"current_price": "255.78",
"price_change": "-5.95",
"percent_change": "-2.27%",
"currency": "USD",
"market": {
"trading": "Closed",
"price": "255.30",
"extracted_price": 255.3,
"price_movement": {
"percentage": 0.19,
"movement": "Up"
}
},
"extensions": [
"Closed: Feb 13, 8:00:00 PM UTC-5",
"USD",
"NASDAQ"
]
},
"key_stats": {
"previous_close": "$261.73",
"day_range": "$255.45 - $262.23",
"year_range": "$169.21 - $288.61",
"market_cap": "3.76T USD",
"avg_volume": "53.72M",
"pe_ratio": "32.36",
"dividend_yield": "0.41%",
"primary_exchange": "NASDAQ",
"climate_change": {
"score": "A",
"link": "https://cdp.net/..."
},
"stats": [],
"tags": []
},
"about": {
"description": "Apple Inc. is an American multinational technology company...",
"ceo": "Tim Cook",
"founded": "Apr 1, 1976",
"headquarters": "Cupertino, California",
"employees": "166,000",
"website": null,
"info": []
},
"financials": [
{
"title": "Income Statement",
"results": [
{
"date": "Dec 2025",
"period_type": "Quarterly",
"table": [
{
"title": "Revenue",
"description": "The total amount...",
"value": "143.76B",
"change": "15.65%"
},
{
"title": "Net income",
"description": "Company earnings...",
"value": "42.10B",
"change": "15.87%"
}
]
}
]
}
],
"news": [
{
"title": "Here's Why Apple (AAPL) is a Great Momentum Stock to Buy",
"link": "https://www.nasdaq.com/...",
"source": "Nasdaq",
"date": "1 day ago",
"iso_date": "2025-02-13T12:00:00+00:00",
"thumbnail": "https://..."
}
],
"discover_more": [
{
"title": "You may be interested in",
"items": [
{
"stock": "AMZN:NASDAQ",
"name": "Amazon.com Inc",
"price": "$198.79",
"extracted_price": 198.79,
"currency": "USD",
"price_movement": {
"percentage": 0.41,
"movement": "Up"
}
}
]
}
]
}
}
Generate Code with AI
Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.
Related Endpoints
Find ticker symbols and exchanges before fetching complete quote data.
Fetch daily price and volume history for the same symbol.
Use minute-by-minute price points beside quote summary fields.
Discover market movers, indices, currencies, crypto, and futures context.
Google Finance API FAQ
Answers for developers evaluating Google Finance quote data, stock market data APIs, and ticker enrichment workflows.
What does the Google Finance quote API return?
The quote endpoint returns structured JSON for a ticker, including current price fields, market status, key statistics, company profile data, financial statement rows, recent news, and related ticker suggestions when Google Finance exposes them.
When should I use quote instead of historical or intraday data?
Use the quote endpoint for the latest ticker profile and summary data. Use the historical endpoint for daily price and volume history, and the intraday endpoint when your application needs minute-level graph points.
Do I need the exchange code for a stock quote request?
Passing the exchange code, such as NASDAQ for AAPL, is recommended because it avoids ambiguity and reduces lookup latency. If you only know a company name or symbol, use Search Financial Instruments first.