Sunrise, sunset, solar noon, moonrise, moonset and moon phase
Sunrise, sunset, solar noon, moonrise, moonset and moon phase for a date.
Request
GEThttps://weather.p.apihiver.com/v1/sun-moon?city=Delhi
String. City name, e.g.
Mumbai. Give city or coords. String. ISO country code to pick the right city, e.g.
IN. String. Latitude,longitude, e.g.
19.07,72.87. Give city or coords. String. YYYY-MM-DD (default today, local)
Language
Client
1curl --request GET \
2 --url 'https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D' \
3 --header 'Accept: application/json' \
4 --header 'X-API-Key: YOUR_API_KEY'Sunrise, sunset, solar noon, moonrise, moonset and moon phase: Weather API reference
Sunrise, sunset, solar noon, moonrise, moonset and moon phase for a date. This endpoint is part of the Weather API: Current weather, 9-day forecasts, hourly forecasts, and sunrise/sunset/moon phase for any city or coordinates worldwide.
Sunrise, sunset, solar noon, moonrise, moonset and moon phase: example requests in every language
GET /v1/sun-moon in Shell (cURL)
curl --request GET \
--url 'https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D' \
--header 'Accept: application/json' \
--header 'X-API-Key: YOUR_API_KEY'GET /v1/sun-moon in Shell (HTTPie)
http GET 'https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D' \
Accept:application/json \
X-API-Key:YOUR_API_KEYGET /v1/sun-moon in Shell (Wget)
wget --quiet \
--method GET \
--header 'Accept: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--output-document \
- 'https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D'GET /v1/sun-moon in Node.js (http)
const http = require('https');
const options = {
method: 'GET',
hostname: 'weather.p.apihiver.com',
port: null,
path: '/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D',
headers: {
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();GET /v1/sun-moon in Node.js (Request)
const request = require('request');
const options = {
method: 'GET',
url: 'https://weather.p.apihiver.com/v1/sun-moon',
qs: {city: 'Delhi', country: '{country}', coords: '{coords}', date: '{date}'},
headers: {Accept: 'application/json', 'X-API-Key': 'YOUR_API_KEY'}
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});GET /v1/sun-moon in Node.js (Unirest)
const unirest = require('unirest');
const req = unirest('GET', 'https://weather.p.apihiver.com/v1/sun-moon');
req.query({
city: 'Delhi',
country: '{country}',
coords: '{coords}',
date: '{date}'
});
req.headers({
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
});
req.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});GET /v1/sun-moon in Node.js (Axios)
const axios = require('axios').default;
const options = {
method: 'GET',
url: 'https://weather.p.apihiver.com/v1/sun-moon',
params: {city: 'Delhi', country: '{country}', coords: '{coords}', date: '{date}'},
headers: {Accept: 'application/json', 'X-API-Key': 'YOUR_API_KEY'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}GET /v1/sun-moon in Node.js (Fetch)
const fetch = require('node-fetch');
const url = 'https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D';
const options = {
method: 'GET',
headers: {Accept: 'application/json', 'X-API-Key': 'YOUR_API_KEY'}
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}GET /v1/sun-moon in JavaScript (XMLHttpRequest)
const data = null;
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener('readystatechange', function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open('GET', 'https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D');
xhr.setRequestHeader('Accept', 'application/json');
xhr.setRequestHeader('X-API-Key', 'YOUR_API_KEY');
xhr.send(data);GET /v1/sun-moon in JavaScript (Axios)
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://weather.p.apihiver.com/v1/sun-moon',
params: {city: 'Delhi', country: '{country}', coords: '{coords}', date: '{date}'},
headers: {Accept: 'application/json', 'X-API-Key': 'YOUR_API_KEY'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}GET /v1/sun-moon in JavaScript (Fetch)
const url = 'https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D';
const options = {
method: 'GET',
headers: {Accept: 'application/json', 'X-API-Key': 'YOUR_API_KEY'}
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}GET /v1/sun-moon in JavaScript (jQuery)
const settings = {
async: true,
crossDomain: true,
url: 'https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D',
method: 'GET',
headers: {
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
}
};
$.ajax(settings).done(function (response) {
console.log(response);
});GET /v1/sun-moon in Python (http.client)
import http.client
conn = http.client.HTTPSConnection("weather.p.apihiver.com")
headers = {
'Accept': "application/json",
'X-API-Key': "YOUR_API_KEY"
}
conn.request("GET", "/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))GET /v1/sun-moon in Python (Requests)
import requests
url = "https://weather.p.apihiver.com/v1/sun-moon"
querystring = {"city":"Delhi","country":"{country}","coords":"{coords}","date":"{date}"}
headers = {
"Accept": "application/json",
"X-API-Key": "YOUR_API_KEY"
}
response = requests.get(url, headers=headers, params=querystring)
print(response.json())GET /v1/sun-moon in PHP (cURL)
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"X-API-Key: YOUR_API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}GET /v1/sun-moon in PHP (Guzzle)
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D', [
'headers' => [
'Accept' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY',
],
]);
echo $response->getBody();GET /v1/sun-moon in PHP (PECL HTTP v1)
<?php
$request = new HttpRequest();
$request->setUrl('https://weather.p.apihiver.com/v1/sun-moon');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData([
'city' => 'Delhi',
'country' => '{country}',
'coords' => '{coords}',
'date' => '{date}'
]);
$request->setHeaders([
'Accept' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY'
]);
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}GET /v1/sun-moon in PHP (PECL HTTP v2)
<?php
$client = new http\Client;
$request = new http\Client\Request;
$request->setRequestUrl('https://weather.p.apihiver.com/v1/sun-moon');
$request->setRequestMethod('GET');
$request->setQuery(new http\QueryString([
'city' => 'Delhi',
'country' => '{country}',
'coords' => '{coords}',
'date' => '{date}'
]));
$request->setHeaders([
'Accept' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY'
]);
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();GET /v1/sun-moon in Java (AsyncHttp)
AsyncHttpClient client = new DefaultAsyncHttpClient();
client.prepare("GET", "https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D")
.setHeader("Accept", "application/json")
.setHeader("X-API-Key", "YOUR_API_KEY")
.execute()
.toCompletableFuture()
.thenAccept(System.out::println)
.join();
client.close();GET /v1/sun-moon in Java (java.net.http)
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D"))
.header("Accept", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());GET /v1/sun-moon in Java (OkHttp)
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D")
.get()
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();GET /v1/sun-moon in Java (Unirest)
HttpResponse<String> response = Unirest.get("https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D")
.header("Accept", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.asString();GET /v1/sun-moon in C# (HttpClient)
using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "YOUR_API_KEY" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}GET /v1/sun-moon in C# (RestSharp)
var client = new RestClient("https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D");
var request = new RestRequest("", Method.Get);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-API-Key", "YOUR_API_KEY");
var response = client.Execute(request);GET /v1/sun-moon in Go (NewRequest)
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}GET /v1/sun-moon in Ruby (net::http)
require 'uri'
require 'net/http'
url = URI("https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
request["X-API-Key"] = 'YOUR_API_KEY'
response = http.request(request)
puts response.read_bodyGET /v1/sun-moon in Swift (NSURLSession)
import Foundation
let headers = [
"Accept": "application/json",
"X-API-Key": "YOUR_API_KEY"
]
let request = NSMutableURLRequest(url: NSURL(string: "https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()GET /v1/sun-moon in Objective-C (NSURLSession)
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"Accept": @"application/json",
@"X-API-Key": @"YOUR_API_KEY" };
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"GET"];
[request setAllHTTPHeaderFields:headers];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];GET /v1/sun-moon in Kotlin (OkHttp)
val client = OkHttpClient()
val request = Request.Builder()
.url("https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D")
.get()
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "YOUR_API_KEY")
.build()
val response = client.newCall(request).execute()GET /v1/sun-moon in C (libcurl)
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "X-API-Key: YOUR_API_KEY");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);GET /v1/sun-moon in Clojure (clj-http)
(require '[clj-http.client :as client])
(client/get "https://weather.p.apihiver.com/v1/sun-moon" {:headers {:X-API-Key "YOUR_API_KEY"}
:query-params {:city "Delhi"
:country "{country}"
:coords "{coords}"
:date "{date}"}
:accept :json})GET /v1/sun-moon in OCaml (CoHTTP)
open Cohttp_lwt_unix
open Cohttp
open Lwt
let uri = Uri.of_string "https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D" in
let headers = Header.add_list (Header.init ()) [
("Accept", "application/json");
("X-API-Key", "YOUR_API_KEY");
] in
Client.call ~headers `GET uri
>>= fun (res, body_stream) ->
(* Do stuff with the result *)GET /v1/sun-moon in R (httr)
library(httr)
url <- "https://weather.p.apihiver.com/v1/sun-moon"
queryString <- list(
city = "Delhi",
country = "{country}",
coords = "{coords}",
date = "{date}"
)
response <- VERB("GET", url, query = queryString, add_headers('X-API-Key' = 'YOUR_API_KEY'), content_type(""), accept("application/json"))
content(response, "text")GET /v1/sun-moon in PowerShell (Invoke-WebRequest)
$headers=@{}
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "YOUR_API_KEY")
$response = Invoke-WebRequest -Uri 'https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D' -Method GET -Headers $headersGET /v1/sun-moon in PowerShell (Invoke-RestMethod)
$headers=@{}
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "YOUR_API_KEY")
$response = Invoke-RestMethod -Uri 'https://weather.p.apihiver.com/v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D' -Method GET -Headers $headersGET /v1/sun-moon in HTTP (HTTP/1.1)
GET /v1/sun-moon?city=Delhi&country=%7Bcountry%7D&coords=%7Bcoords%7D&date=%7Bdate%7D HTTP/1.1
Accept: application/json
X-Api-Key: YOUR_API_KEY
Host: weather.p.apihiver.com
Example response (200, application/json)
Success.
1{
2 "date": "2026-09-26",
3 "source": "MET Norway",
4 "sunset": "2026-09-26T18:13+05:30",
5 "moonset": "2026-09-26T05:36+05:30",
6 "sunrise": "2026-09-26T06:11+05:30",
7 "location": {
8 "lat": 28.65195,
9 "lon": 77.23149,
10 "name": "Delhi",
11 "country": "India",
12 "timezone": "Asia/Kolkata",
13 "population": 11034555,
14 "country_code": "IN"
15 },
16 "moonrise": "2026-09-26T17:53+05:30",
17 "moon_phase": "full moon",
18 "solar_noon": "2026-09-26T12:12+05:30",
19 "moon_phase_degrees": 168.63
20}Errors
- 400 — A required parameter is missing or a value has the wrong format.
1{ 2 "error": { 3 "code": "INVALID_INPUT", 4 "message": "Pass 'city' (e.g. Mumbai) or 'coords' (lat,lon)." 5 } 6}
Gateway errors (missing key, no subscription, rate limits) are listed in Error codes.