ThingSpeak open source IoT service

When building IoT (Internet of Things) applications, the cloud part where all information from sensors is important. There are many cloud services that can collect IoT data, but the fundamental issue here is that the Internet of Things does not have a standard set of open APIs for consumers. Well, there’s ThingSpeak, but it’s not exactly widely supported. Open systems are driven by open access -  today’s IoT silos are supported by restricted access.

ThingSpeak is an open source “Internet of Things” application and API to store and retrieve data from things using HTTP over the Internet or via a Local Area Network. In 2010, ioBridge launched, an open data platform for the Internet of Things. With ThingSpeak, you can create sensor logging applications, location tracking applications, and a social network of things with status updates. From the beginning, ThingSpeak was designed to be hardware agnostic and is now used by thousands of people to aggregate data from sensors and to control things,

ThingSpeak Features

  • Open API
  • Real-time data collection
  • Geolocation data
  • Data processing
  • Data visualizations
  • Device status messages
  • Plugins

In addition to software source code, ThingSpeak also offers a free service that allows you to test how it works. If you are ready to build your Internet of Things, register for a free developer account.

With ThingSpeak, you can easily create sensor logging applications, location tracking applications, and a social network of things with status updates. For starters ThingSpeak provides platform where you can send your data to using simple HTTP requests (over normal HTTP or secure HTTPS transport via Internet or LAN). The officially supported list of devices includes for example Arduino, Raspberry oi, ioBridge / and Electric Imp.

Because ThingSpeak has easy to use HTTP based interface (supports both POST and GET), you can send data to the service from practically any device or software that can access Internet service, let it be anything from IoT devices to a shell script running on your Linux server or special application/app. One easy way  to update a ThingSpeak Channel is to use HTTP POST: You can specify any number of fields, location, or status in one message. You can also use GET if you can’t use POST in your system for some reason (you can easily testi with GET by writing the request data to web browser URL line for testing). If you have security considerations (fear of your write key or data being compromized) in your system and your IoT device suppors, consider using HTTPS to get some security. Note that the hosted ThingSpeak service has rate limit how often you can send data to it (once in 15 seconds limit) to the update URL at If you need faster speed,  you can get the ThingSpeak service code from GitHub  host it yourself locally or via a shared web host provider.

In addition to storing and retrieving numeric and alphanumeric data, the ThingSpeak API allows for numeric data processing such as timescaling, averaging, median, summing, and rounding. ThingSpeak can draw you graphs based on data (JavaScript-based charts), and you can export the stored data in various formats. The channel feeds through ThingSpeak API (HTTP interface) support JSON, XML, and CSV formats for integration into applications (for example to node.js or any other web platform). Use the Charts API to present numerical data stored in ThingSpeak Channels on charts (supported chart types are line, bar, column, and step).

Channels are where your application stores and retrieves any type of data. Every channel has a unique Channel ID. The Channel ID number is used to identify the channel when your application reads data from the channel. Each channel has a Private View and a Public View. The Private View is only accessible by signing into your user account. The Public View is what other viewers will see. By default, your channel is private and requires a Read API Key to access its feed. You can make a channel public which gives other users the ability to use your feed without a Read API Key.

Each ThingSpeak Channel supports data entries of up to 8 user defined data fields (plus location and status). ThingSpeak also features time zone management and API key management (separate read/write keys). The data can be kept private or published publicly available. There is also Talkback API that allows sending command through ThingSpeak to IoT device.

The ThingSpeak API is available on GitHub and includes the complete ThingSpeak API for processing HTTP requests, storing numeric and alphanumeric data, numeric data processing, location tracking, and status updates.  The open source version follows the same documentation as the ThingSpeak hosted service. The source code is mostly written using Ruby programming language.

Quick Start

  1. Sign Up for a ThingSpeak account
  2. Create a new Channel by going to your Channels page and clicking Create New Channel
  3. Update your Channel via URL:
  4. View your Channel feed:
  5. Follow a tutorial for common devices and applications

For more documentation check out ThingSpeak documentation, ThingSpeak Community documentation, API documentation and tutorials. ThingSpeak Community site features a Blog, Forum, Documentation, and Tutorials.

I am just learning to use ThingSpeak, but to this point this ThingSpeak service looks very interesting.

Instructional video:


Usage examples:

Using an Arduino + Ethernet Shield to Update a ThingSpeak Channel

There is a Hamster on Twitter Now… Thanks to ThingSpeak, Arduino, and ESP8266 Wi-Fi

ThingSpeak Forum Dedicated to the ESP8266 Wi-Fi Module

Send sensor data (DHT11 & BMP180) to ThingSpeak with an Arduino, using cable or WiFi (ESP8266)


Monitoring Linux Server Statistics

Send Windows Server Data to ThingSpeak using PowerShell

setting up IoT server with ThingSpeak on Ubuntu 12.04

Bash script to install a Thingspeak server on Ubuntu Server 12.04. Raspbian

Parse ThingSpeak Last Entry Feed with jQuery

Prototype Internet of Things (IoT) applications using ThingSpeak and MATLAB

Internet of Things: Programming IoT Devices, Web Services and IoT Clients


  1. estores madrid says:

    It’s remarkable to pay a quick visit this web site and reading
    the views of all colleagues on the topic of
    this post, while I am also eager of getting knowledge.

  2. Dion Seminara says:

    That is a good tip particularly to those fresh to the blogosphere.
    Simple but very accurate information… Appreciate your sharing this one.
    A must read post!

  3. acertijos con respuesta says:

    I do agree with all of the ideas you have introduced for your post.
    They’re really convincing and can definitely work. Still, the posts
    are too brief for starters. May you please extend them a
    little from subsequent time? Thanks for the post.

  4. Tomi Engdahl says:


    Getting Started with ThingSpeak
    Introduction to ThingSpeak and overview of its basic workflow

    MATLAB Analysis and Visualization
    Explore and transform data, visualize data in MATLAB plots

    TweetControl App

    Create a TweetControl

    Link a ThingHTTP request to a Twitter hashtag.

    Sign into ThingSpeak.

    Select Apps > TweetControl.

    Click New TweetControl.

    Check the Anonymous TweetControl box to enable anyone to trigger this TweetControl.

    Twitter Account: Enter a Twitter username to tie the control to one specific Twitter user.

    Trigger: Enter the trigger word preceded by a hashtag. For example, #turnlightson.

    ThingHTTP Action: Select a ThingHTTP to run.

    Save the TweetControl.

  5. Tomi Engdahl says:

    ThingSpeak Channel Data With More Than 8 Fields

    Are you using ThingSpeak to capture and save your IoT device data points? Ever felt constrained by the 8 field channels limit?

    I was.

    A Simple Solution

    Hmm, what to do?

    While you are limited to 8 data fields, a channel is not constrained by it’s own channel data. So the answer is right there…just add another channel and you get another group of 8 data fields. Since the additional data fields can be accessed from any of the master channel’s “plug-in” webpages, you have just doubled the number of entries in a single record, from 8 to 16. There is really no limit to how many channels that can be added, scaling the data set upward by 8 fields for each channel added.

    Note the nested jQuery “$.getJSON” to retrieve the ThingSpeak channel data. All processing needs to be performed inside the inner nest in order to keep the values in scope.


    Scalable ThingSpeak data sets. This short post should serve as a reference…a reminder of just how simple and obvious it is to expand your sensor data beyond the 8-field limit imposed on a ThingSpeak channel.

  6. Tomi Engdahl says:

    Parse ThingSpeak Last Entry Feed with jQuery

    Here is a quick reminder on how to access a Channel’s last entry via the ThingSpeak API.


    Parsing JSON with jQuery

    jQuery makes it so easy to make web-service and API calls

  7. Tomi Engdahl says:

    For example p5js code can be pretty easily changed to read data from ThingSpeak

    var url = ‘’;

    // Get the angle (convert to radians)
    var angle = radians(Number(weather.field1));
    // Get the wind speed
    var windmag = Number(weather.field1);


Leave a Comment

Your email address will not be published. Required fields are marked *