How to use the OpenWeatherMap API with Python
Tags: programming, api, python, learntocode
Published: 2019-02-06 16:53:10

---
title: How to use the OpenWeatherMap API with Python
published: true
description: Learn how to use Python to request and transform data from the OpenWeatherMap API. 
tags: programming,api,python,learntocode
cover_image: https://thepracticaldev.s3.amazonaws.com/i/l7xun29k0vw4hu082aev.png
series: Next XYZ Courses
canonical_url: https://next.tech/blog/how-to-use-the-openweathermap-api-with-python
---

In this article we’ll explore the powerful OpenWeatherMap API, which allows you to access and use weather data in your programs. It can be used to display information such as the temperature, wind, and humidity, for the current weather and for the forecasted weather.

We’ll use the Python programming language and an awesome library called Python OpenWeatherMap (PyOWM) to make it easier to use the OpenWeatherMap API in Python.

This article is based on an interactive course I released on Next XYZ. The course has Python and the PyOWM library preinstalled and lets you use both directly from your browser. If you want to learn even more about PyOWM , you can [check out the course](https://c.next.tech/2DgPvC0) and get started for free!

## Setting Up Your Environment

To run the code snippets in this article you’ll need to have Python and the `pyowm` library installed (install instructions for `pyowm` can be found [here](https://github.com/csparpa/pyowm)).

Once you have this installed, you can open up a Python shell from your command line (usually using `python` or `python3`, depending on which version of Python you're using) and use it to run the commands below.

## Getting your OpenWeatherMap API Key

Once you have your environment setup, the next step is to get your free API key from the [OpenWeatherMap website](https://openweathermap.org/).

After you’ve signed up on OpenWeatherMap’s website, you’ll see this at the top of the page:

![](https://thepracticaldev.s3.amazonaws.com/i/dm8wxso85450ohm6o1co.png)

Click on "API keys" and you’ll see the API key.

When you work with the the examples below, you’ll need to replace `<api_key>` with this API key.

## Weather Conditions

Now that you have your API key, let’s check the weather! First we’ll start by checking if there are any clouds in the five-day forecast for Los Angeles. Here’s the code to do that:

```python
import pyowm
owm = pyowm.OWM('<api_key>') # TODO: Replace <api_key> with your API key
la = owm.three_hours_forecast('Los Angeles, US')
print(la.will_have_clouds())
```


Let’s break this down. We start by importing the `pyowm` library, then we authenticate using an API key. The authenticated connection to the API is stored in the `owm` variable.

Next we use the `three_hours_forecast()` method to get the forecast for a specified location (in this case, Los Angeles) and store it in the la variable. Note that the `three_hours_forecast()` method returns a five-day forecast with weather data sampled every three hours.

Now that we have the weather object, we can call the `will_have_clouds()` method on it to check if there will be clouds! Within the `pyowm` library, this will check the weather at each three-hour interval and if any weather sample indicates there will be clouds, the method will return true, otherwise it will return false.

We can also use PyOWM to see if it will rain, be foggy, or check for other common weather conditions. OpenWeatherMap has data from all around the world as well. For example, let’s take a look at the weather in London:

```python
import pyowm
owm = pyowm.OWM('<api_key>') # TODO: Replace <api_key> with your API key
london = owm.three_hours_forecast('London, GB')
print(london.will_have_rain())
print(london.will_have_fog())
```


Awesome! With just a few lines of code you can get and display some amazing information in your program.

## Current Temperature

Now let’s take a look at how to get the current temperature:

```python
import pyowm
owm = pyowm.OWM('<api_key>') # TODO: Replace <api_key> with your API key
sf = owm.weather_at_place('San Francisco, US')
weather = sf.get_weather()
print(weather.get_temperature('fahrenheit')['temp'])
```


As you might guess from the use of `'fahrenheit'` in the above code, you can also request the data in Celsius by passing `'celsius'` to the `get_temperature()` method.

## Sunrise and Sunset Times

Another cool thing you can do with PyOWM is request and display the sunrise and sunset times. The `get_sunrise_time()` and `get_sunset_time()` methods can be called to get this info. There is a catch when using these methods though- they return the time in unix time by default (e.g., **1542800608**). Passing the `timeformat='iso'` parameter converts the time to a more human-readable format (e.g., **2018–11–21 21:16:54+00**). Also, the times are in the GMT timezone (in the Next XYZ course we cover how to convert the times to a specific timezone).

Here’s an example of getting the sunrise and sunset times:

```python

import pyowm
owm = pyowm.OWM('<api_key>') # TODO: Replace <api_key> with your API key
boston = owm.weather_at_place('Boston, US')
weather = boston.get_weather()
print(weather.get_sunrise_time(timeformat='iso')) # Prints time in GMT timezone
print(weather.get_sunset_time(timeformat='iso')) # Prints time in GMT timezone
```


## Wrapping Up

If you enjoyed this post and want to learn more about using Python OpenWeatherMap to access weather data, check out the [course on Next XYZ](https://c.next.tech/2DgPvC0), which goes more in-depth into how to use PyOWM. It also includes interactive tasks and quizzes which will help you master the material in the course. By the end of it you’ll have created a weather GUI just like the image below!

![](https://thepracticaldev.s3.amazonaws.com/i/rik1pcv59j43lv010dy4.png)


Have any questions or comments? Just leave a note below!

Thanks for reading, and happy coding!