One request returns every article as clean JSON with images.
From zero to live Google News data in about two minutes:
Create a free account. Try it free, no card needed.
Copy your API key from the dashboard.
Run the script below. Clean JSON comes back, and the same rows export as CSV.
Install the requests library with pip install requests, grab a free API key from the dashboard, then call the news endpoint. There is no browser to drive and no HTML to parse on your side. Here is the whole script:
Prefer the command line to check it first? The same call as curl:
The articles come back as clean JSON, and the same rows are available as CSV. Here are the first two, so they drop straight into Sheets or a CRM:
And the same response as JSON, which is what resp.json() hands your script:
Add gl and hl for country and language, and page with num for more results.
Each item in data["news"] is a plain dictionary, so you read the fields directly, no HTML parsing and nothing that breaks when Google changes its page. Here is the top article, shown as CSV, ready for Sheets or a database:
Or the same record as JSON, exactly the shape your Python code loops over:
To move it into pandas for analysis, one line does it: pandas.DataFrame(data["news"]) gives you a table with a column for every field above.
All three return Google News as JSON you can call from Python. The difference is what each result carries and how you pay for it.
| Other News APIs | CrustAPI News | |
|---|---|---|
| Billing unit | One credit per search, even when it returns nothing | Pay per successful search; empty or failed searches cost nothing |
| What it returns | JSON | Clean JSON from the API, or the same rows as CSV |
| Article image | Small gstatic thumbnail | The real publisher hero image (og:image) |
| Python setup | requests, or a vendor SDK | requests and one header, no SDK |
| Free tier | Trial credits that expire | Free to try, no card |
| Paid funds / quota expiry | Expire monthly or in 6 months | Never expire |
| Storing the data | Varies by provider | No storage limits. Keep it, export it, build on it |
You pay the applicable price per successful search, however many articles come back. A search that returns none costs nothing. Funds are prepaid and never expire.
| Deposit | Google Search / 1,000 requests | Maps / 1,000 businesses | LinkedIn reads / 1,000 requests | People, Jobs, Refresh / 1,000 units |
|---|---|---|---|---|
| $10+ | $1.00 | $1.96 | $6.00 | $1.96 |
| $149+ | $0.76 | $1.49 | $4.50 | $1.49 |
| $549+ | $0.56 | $1.10 | $3.30 | $1.10 |
| $1,999+ | $0.41 | $0.80 | $2.45 | $0.80 |
| $6,500+ | $0.33 | $0.65 | $1.95 | $0.65 |
| $27,500+ | $0.28 | $0.55 | $1.65 | $0.55 |
| $50,000+ | $0.26 | $0.50 | $1.50 | $0.50 |
| $100,000+ | $0.20 | $0.40 | $1.50 | $0.40 |
Every eligible account gets $6 of free usage monthly. Each deposit keeps its prices until spent; paid funds never expire. People and Jobs bill per successful search, Refresh per accessible profile. Full profiles in People use the read rate per full profile. See all billing details.
Larger deposits unlock lower endpoint prices. Each deposit keeps its prices until spent. See the full deposit table on the pricing page. Prices in USD, ex-tax.
Related: Google News API · Google Search API · Google Maps Scraper API · Docs
When a licensed news feed is the better pick: you need full article bodies with a publisher license, guaranteed historical archives going back years, or a contract that indemnifies redistribution. Google News gives you the headline, source, snippet, and link, which is what most monitoring and research scripts need, but it is not a licensed full-text archive.
Python 3, the requests library, and a free CrustAPI key. Install requests with pip install requests, sign up for the key, then call the news endpoint. No browser to drive and no HTML parsing on your side.
No. The endpoint returns clean JSON, so you read data['news'] and each article already has the title, source, link, date, snippet, image, and position. There is no HTML to parse and nothing breaks when Google changes its page layout.
Add the num parameter for more results per call, and gl and hl to set the country and language. You pay the applicable price per successful search, however many articles come back, so a call that finds 12 still costs one request charge and a call that returns none costs nothing.
Logged-out, public-only collection has repeatedly defeated computer-fraud and contract claims. Google's Terms prohibit automated access that violates instructions like robots.txt. We handle the collection; what you get is the same public news listing anyone sees on the results page.
Yes. The JSON maps straight to a list of dicts, so pandas.DataFrame(data['news']) gives you a table in one line, and the CSV view drops into Sheets or a database with no transformation. There is no storage limit, so you keep what you pull.
Google Search costs $1.00 per 1,000 successful requests at standard prices, down to $0.20 for the largest deposit. Empty and failed searches are free. Every eligible account gets $6 of free usage monthly. Paid funds never expire.
The free plan covers a real news feed. Paste the script above, swap in your key, and look at the JSON that comes back.
Try for free