Turn a Google Spreadsheet
into a JSON API

Connect Google sheets to CRM, API, Website, WordPress, any application or tool.

Create Free API Use Cases Documentation
[
  {
    "id": "1",
    "name": "Tom",
    "age": "15",
    "comment": ""
  },
  {
    "id": "2",
    "name": "Alex",
    "age": "24",
    "comment": ""
  }
]

Easy to use and implement

SheetDB will turn your sheets into a JSON API, easy to integrate with other tools and all programming languages. We have prepared many libraries working with common tools, other APIs and programming languages.

If you want to use a different API, e.g. in your CRM, you can use our API to turn the spreadsheet into JSON API.

Use Cases and Examples

Google Sheets JSON API

You can read and edit your spreadsheet with GET, POST, PUT and DELETE requests with just a few lines of code.

Documentation

Examples and code samples

Make interactive content without coding skills

non-IT WordPress

If you don't know how to code simpy use our HTML Handlebars snippet.

Give your clients a CMS that everyone know how to use

Digital agencies

If you work with non-IT people, use Google Sheets as a database for your projects. Spreadsheet is a great CMS that everyone know how to use!

Developers first, no matter what language you use

Developers

SheetDB is really easy to implement with any programming language. We take care about tokens and security stuff, so you can focus on your ideas.

<!-- More details here: https://docs.sheetdb.io/#our-handlebars-snippet --> <table> <thead> <tr> <td>ID</td> <td>Name</td> <td>Age</td> <td>Comment</td> </tr> </thead> <tbody data-sheetdb-url="https://sheetdb.io/api/v1/58f61be4dda40" data-sheetdb-sort-by="age" data-sheetdb-sort-order="desc"> <tr> <td>{{id}}</td> <td>{{name}}</td> <td>{{age}}</td> <td>{{comment}}</td> </tr> </tbody> </table> <script src="https://sheetdb.io/handlebars.js"></script> <!-- More details here: https://wordpress.org/plugins/sheetdb/ --> [sheetdb url="https://sheetdb.io/api/v1/58f61be4dda40" element="ul" limit=3 search="id=*" sort-by="id" sort-order="desc"] {{id}} – {{name}} [/sheetdb] fetch('https://sheetdb.io/api/v1/58f61be4dda40') .then(response => response.json()) .then(data => { console.log(data); }) .catch(error => { console.error(error); }); $.ajax({ url: "https://sheetdb.io/api/v1/58f61be4dda40", success: function(data) { console.log(data); } }); <script src="//cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.js"></script> <script> // Get all data axios.get('https://sheetdb.io/api/v1/58f61be4dda40') .then( response => { console.log(response.data); }); // Get 10 results starting from 20 axios.get('https://sheetdb.io/api/v1/58f61be4dda40?limit=10&offset=20') .then( response => { console.log(response.data); }); // Get all data sorted by name in ascending order axios.get('https://sheetdb.io/api/v1/58f61be4dda40?sort_by=name&sort_order=asc') .then( response => { console.log(response.data); }); </script> <?php // Install SheetDB package: composer require sheetdb/sheetdb-php // More details here: https://github.com/sheetdb/sheetdb-php require('vendor/autoload.php'); use SheetDB\SheetDB; $sheetdb = new SheetDB('58f61be4dda40'); $content = $sheetdb->get(); // returns all spreadsheets data $keys = $sheetdb->keys(); // returns all spreadsheets key names $name = $sheetdb->name(); // returns name of a spreadsheet document <?php $options = [ 'http' => [ 'method' => 'GET' ] ]; $response = json_decode( file_get_contents('https://sheetdb.io/api/v1/58f61be4dda40', false, stream_context_create($options)) ); require 'net/http' require 'json' response = JSON.parse( Net::HTTP.get( URI('https://sheetdb.io/api/v1/58f61be4dda40') ) ) import requests import json response = json.loads( requests.get('https://sheetdb.io/api/v1/58f61be4dda40').content ) new Vue({ el: "#app", data() { return { content: [] } }, template: `<table> <thead> <tr> <td>ID</td> <td>Name</td> <td>Age</td> <td>Comment</td> </tr> </thead> <tbody> <tr v-for="person in content"> <td v-text="person.id"></td> <td v-text="person.name"></td> <td v-text="person.age"></td> <td v-text="person.comment"></td> </tr> </tbody> </table>`, created() { fetch('https://sheetdb.io/api/v1/58f61be4dda40') .then(response => response.json()) .then(data => this.content = data) } }); import Foundation // Read whole spreadsheet let url = String(format: "https://sheetdb.io/api/v1/58f61be4dda40") let serviceUrl = URL(string: url) var request = URLRequest(url: serviceUrl!) request.httpMethod = "GET" request.setValue("Application/json", forHTTPHeaderField: "Content-Type") let session = URLSession.shared session.dataTask(with: request) { (data, response, error) in if let data = data { do { let json = try JSONSerialization.jsonObject(with: data, options: []) print(json) } catch { print(error) } } }.resume() const sheetdb = require("sheetdb-node"); const client = sheetdb({ address: '58f61be4dda40' }); // Read whole spreadsheet client.read().then(function(data) { console.log(data); }, function(error){ console.log(error); }); // Read first two rows from sheet "Sheet2" client.read({ limit: 2, sheet: "Sheet2" }).then(function(data) { console.log(data); }, function(err){ console.log(err); });

Friendly, personal support

Write to us via email or chat in bottom right corner. We are developers, we can assist with your integrations!

Testimonials

“Google Sheets combined with SheetDB has offered a great alternative approach over more conventional CMS that we found lacked the transparency and connectivity to manage vast amounts of data for our websites. SheetDB, with its reliability, scalability and professional support, is now central to our plans moving forward.”

Shane Williams
eCommerce Manager
Fred. Olsen Travel
UK

“I needed a solution to dynamically generate a webpage from. I found SheetDB. When I discovered the Query Strings component only permitted a single parameter, I went on live chat to inquire about how to use multiple parameters. Chris informed me that my request had been added to the development queue, and then to my disbelief - the request was completed The same day! Cannot say enough good things about SheetDB!”

Ryan Brooks
Full-stack developer
Canada

“As I struggled with an application, I reached out and within a day, a human emailed me back. His first reply had the exact help I needed allowing me to complete my work on time. The documentation was even updated to reflect the question I had. Best customer service experience I have ever had, I wish my bank or cell service provider would take note.”

Zack Edwards
Software Engineering
Stevens Institute of Technology
NJ, USA

“We had been looking for a solution to connect to Google Sheets to our website as a search function. When we found SheetDB the integration and usability was simple and worked perfect. The team even went as far as to add extra features to help us achieve the perfect final result. Highly recommended”

Trent Smith
Product Manager & Market Analyst
Filpro
Australia

Ready to get started?

Create your free API now
Sign in with Google account