# Google Maps Timezone & Local Time Lookup (`crawlerbros/google-maps-timezone`) Actor

Resolve the IANA timezone, current local time, UTC offset, and daylight-saving information for any coordinate. Accepts single or batch lat/lng inputs.

- **URL**: https://apify.com/crawlerbros/google-maps-timezone.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Developer tools, Automation, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Google Maps Timezone & Local Time Lookup

Resolve the **IANA timezone**, **current local time**, **UTC offset**, and **daylight-saving status** for any latitude/longitude on Earth. Designed to complement other Google Maps actors when you need to normalise business hours, schedule notifications across regions, or enrich geocoded data with timezone context.

### What you get

For each input coordinate, the actor returns one record with:

- `inputLocation` — the original `{lat, lng}` you provided
- `timezone` — IANA zone name (e.g. `America/New_York`, `Asia/Tokyo`, `Australia/Sydney`)
- `timezoneAbbreviation` — short code when DST is in effect (e.g. `EDT`, `BST`)
- `utcOffset` — current offset formatted as `+HH:MM` / `-HH:MM`
- `utcOffsetSeconds` — current offset in seconds (positive east of UTC)
- `currentLocalTime` — wall-clock time at the coordinate, ISO 8601 (second resolution)
- `currentUtcTime` — equivalent UTC time, ISO 8601 with `Z`
- `isDaylightSavingTime` — `true` when DST is currently active
- `daylightSavings` — `{ inEffect, observed, nextTransition, standardUtcOffset, ... }`
- `scrapedAt` — UTC timestamp of when the lookup was performed

Empty/null fields are omitted automatically.

### Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `location` | object `{lat, lng}` | Conditional | A single coordinate. Provide this OR `locations`. |
| `locations` | array of `{lat, lng}` | Conditional | Multiple coordinates resolved in one run. |
| `proxyConfiguration` | proxy | Optional | Usually not needed; the lookup works fine from datacenter IPs. |

At least one of `location` or `locations` must be provided. Latitude must be in `[-90, 90]` and longitude in `[-180, 180]`. Synonyms `latitude` / `longitude` / `lon` are also accepted.

#### Example input

```json
{
  "locations": [
    {"lat": 40.7128, "lng": -74.0060},
    {"lat": 51.5074, "lng": -0.1278},
    {"lat": 35.6762, "lng": 139.6503},
    {"lat": -33.8688, "lng": 151.2093}
  ]
}
```

### Example output

```json
{
  "inputLocation": {"lat": 40.7128, "lng": -74.006},
  "timezone": "America/New_York",
  "timezoneAbbreviation": "EDT",
  "utcOffset": "-04:00",
  "utcOffsetSeconds": -14400,
  "currentLocalTime": "2026-06-16T07:45:30",
  "currentUtcTime": "2026-06-16T11:45:30Z",
  "isDaylightSavingTime": true,
  "daylightSavings": {
    "inEffect": true,
    "observed": true,
    "nextTransition": "2026-11-01T06:00:00Z",
    "dstName": "EDT",
    "standardUtcOffset": "-05:00",
    "standardUtcOffsetSeconds": -18000
  },
  "scrapedAt": "2026-06-16T11:45:31.124+00:00"
}
```

### Use cases

- **Normalise business hours** — combine with a places scraper to convert "9 AM - 5 PM" into UTC ranges.
- **Schedule outreach** — only send notifications during local business hours per recipient.
- **Compliance & reporting** — stamp events with the correct local time and DST flag.
- **Travel apps** — show local time at a destination given lat/lng.

### FAQ

**Does this require a Google Maps API key?**
No. The actor uses the free public `timeapi.io` service to map coordinates to IANA zones — no API key, no quota, no login.

**Do I need a proxy?**
No. The lookup works directly from Apify datacenter IPs. A `proxyConfiguration` input exists for environments where outbound HTTP from datacenter IPs is restricted.

**How accurate is the timezone for borders / disputed regions?**
`timeapi.io` is backed by the IANA tz database, the same database used by every major operating system and programming language. It correctly handles fractional offsets (India `+05:30`, Nepal `+05:45`, Newfoundland `-03:30`) and current DST rules.

**What happens with invalid coordinates?**
Out-of-range or non-numeric inputs are rejected with a clear error before any network calls are made.

**Can I resolve thousands of coordinates?**
Yes. Each lookup is a single HTTP request. The actor paces requests politely and retries transient failures, so very large batches complete reliably.

### Limits & notes

- Country / countryCode fields are not included in the output because `timeapi.io` does not return them. Pair this actor with the `google-maps-geocoding` actor when you need country context for the same coordinate.
- `timezoneAbbreviation` is only populated when daylight-saving time is currently in effect (the underlying API only exposes the DST abbreviation).

### 🗺️ Complete Google Maps Scraper Suite

This actor is part of a comprehensive Google Maps data extraction toolkit by **crawlerbros**. All actors run on the free Apify plan, use no proxy by default, and return clean, structured data.

| Actor | What it does |
|---|---|
| 🏢 [Google Maps Business Scraper](https://apify.com/crawlerbros/google-maps-scraper) | Extract business data — name, address, phone, website, rating, reviews, hours, amenities |
| ⭐ [Google Maps Reviews Scraper](https://apify.com/crawlerbros/google-maps-reviews-scraper) | Scrape reviews with reviewer Local Guide level, photos, mentioned items, owner replies |
| 📸 [Google Maps Photos Scraper](https://apify.com/crawlerbros/google-maps-photos) | Extract all photos from any place — max-resolution URLs, contributor info, categories |
| 🕐 [Google Maps Business Hours Scraper](https://apify.com/crawlerbros/google-maps-business-hours) | Full 7-day hours, timezone, current local time, next open/close, holiday hours |
| 📊 [Google Maps Popular Times Scraper](https://apify.com/crawlerbros/google-maps-popular-times) | Busy hours histogram for all 7 days + current busyness + typical visit time |
| 📧 [Google Maps Email Extractor](https://apify.com/crawlerbros/google-maps-email-extractor) | Find business emails + social media links by crawling websites |
| 🗺️ [Google Maps Area Scanner](https://apify.com/crawlerbros/google-maps-area-scanner) | Geographic grid scanning — bypass the 120-place limit with bounding box / circle / polygon |
| 💼 [Google Maps Leads Scraper](https://apify.com/crawlerbros/google-maps-leads) | B2B lead generation with email + phone enrichment, US states + global countries |
| 🤖 [Google Maps MCP Server](https://apify.com/crawlerbros/google-maps-mcp) | Unified MCP server combining search + reviews for AI assistants |
| 🧭 [Google Maps Directions Scraper](https://apify.com/crawlerbros/google-maps-directions) | A→B routing — distance, duration, traffic, route alternatives for driving/walking/transit |
| 📍 [Google Maps Geocoding Scraper](https://apify.com/crawlerbros/google-maps-geocoding) | Bidirectional geocoding — address ↔ coordinates, with address components |
| 🔗 [Google Maps Similar Places Scraper](https://apify.com/crawlerbros/google-maps-similar-places) | "People also search for" / related place discovery — competitor & alternative finder |
| 🍽️ [Google Maps Menu Scraper](https://apify.com/crawlerbros/google-maps-menu) | Restaurant menu items, prices, descriptions, photos |
| 📌 [Google Maps Nearby Scraper](https://apify.com/crawlerbros/google-maps-nearby) | Find places near a coordinate point — lightweight POI search by category |
| 📋 [Google Maps Place List Scraper](https://apify.com/crawlerbros/google-maps-place-list) | Extract Google's curated "Top X in Y" lists — best hotels/restaurants/things to do |

# Actor input Schema

## `location` (type: `object`):

A single {lat, lng} coordinate to resolve. Use either this or 'locations'.

## `locations` (type: `array`):

Multiple {lat, lng} coordinates to resolve in one run.

## `proxyConfiguration` (type: `object`):

Optional proxy. Not normally required; timeapi.io accepts direct datacenter requests.

## Actor input object example

```json
{
  "location": {
    "lat": 40.7128,
    "lng": -74.006
  },
  "locations": [
    {
      "lat": 40.7128,
      "lng": -74.006
    },
    {
      "lat": 51.5074,
      "lng": -0.1278
    },
    {
      "lat": 35.6762,
      "lng": 139.6503
    },
    {
      "lat": -33.8688,
      "lng": 151.2093
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `timezones` (type: `string`):

Dataset containing all resolved timezone records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "location": {
        "lat": 40.7128,
        "lng": -74.006
    },
    "locations": [
        {
            "lat": 40.7128,
            "lng": -74.006
        },
        {
            "lat": 51.5074,
            "lng": -0.1278
        },
        {
            "lat": 35.6762,
            "lng": 139.6503
        },
        {
            "lat": -33.8688,
            "lng": 151.2093
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/google-maps-timezone").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "location": {
        "lat": 40.7128,
        "lng": -74.006,
    },
    "locations": [
        {
            "lat": 40.7128,
            "lng": -74.006,
        },
        {
            "lat": 51.5074,
            "lng": -0.1278,
        },
        {
            "lat": 35.6762,
            "lng": 139.6503,
        },
        {
            "lat": -33.8688,
            "lng": 151.2093,
        },
    ],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/google-maps-timezone").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "location": {
    "lat": 40.7128,
    "lng": -74.006
  },
  "locations": [
    {
      "lat": 40.7128,
      "lng": -74.006
    },
    {
      "lat": 51.5074,
      "lng": -0.1278
    },
    {
      "lat": 35.6762,
      "lng": 139.6503
    },
    {
      "lat": -33.8688,
      "lng": 151.2093
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call crawlerbros/google-maps-timezone --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlerbros/google-maps-timezone"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Wf9MCZsx1hTLapvAQ/builds/NHb7MnbfzuKonl6tb/openapi.json
