【結論】このエラーの原因と直し方(2026年9月追記)
「API keys with referer restrictions cannot be used with this API.」は、「HTTPリファラー(ウェブサイト)」制限をかけたAPIキーを、サーバー側から呼ぶAPI(Geocoding API など)に使ったときに出ます。サーバーからのリクエストにはリファラーが付かないため、リファラー制限のキーはそもそも使えません。
直し方は、サーバー用のAPIキーを別に作り、アプリケーションの制限を「IPアドレス」にすることです(詳しくは記事の後半「原因と正しい設定」を参照)。制限を追加したり時間を待ったりしても、キーの種類が合っていなければ直りません。
GoogleマップのAPIって使ったことありませんか?
登録したんですけどこのエラーが出るんですよ
api keys with referer restrictions cannot be used with this api
でエラーでググると制限をかけるように書いてありまして
制限をかけてもまだエラーが直らないんですよ
ちなみにハマってる人はたくさんいるみたいです
https://qiita.com/yoshiwo/items/0b4a84d2413a87218139
こちらを参考に制限かけようとしたらGeocoding APIがないどうしたらいいのか?
ググっているとこちらへたどり着く、

色々調べているとこちらのリンクが見つかり
https://console.cloud.google.com/apis/api/geocoding_backend/overview
実際は、
https://console.cloud.google.com/apis/library
こちらのリンクからAPIを探すのがいいですね。
選択中の API:
Directions API
Geocoding API
Geolocation API
Maps JavaScript API
Places API
いくら追加しても同じエラーが出るぞと友達に連絡してました。何時間か待っていたら使えるようになっていました。5分くらい待つと書いてありますが私の場合5分どころではありませんでした。
import requests
# from django.shortcuts import render
def display_map(location_name):
# ジオコーディングを行うためのAPIキーを設定します
api_key = 'your API key'
# ジオコーディングAPIのURL
geocoding_url = 'https://maps.googleapis.com/maps/api/geocode/json'
# ジオコーディングを行う場所の名前(例: 八王子駅)
# location_name = '八王子駅'
# ジオコーディングAPIにリクエストを送信します
response = requests.get(geocoding_url, params={'address': location_name, 'key': api_key})
data = response.json()
print(data)
if data['status'] == 'OK':
# ジオコーディングAPIから返された結果を解析し、緯度と経度を取得します
latitude = data['results'][0]['geometry']['location']['lat']
longitude = data['results'][0]['geometry']['location']['lng']
context = {
'latitude': latitude,
'longitude': longitude,
}
return( context)
else:
# ジオコーディングが失敗した場合のエラーハンドリングを行います
error_message = 'ジオコーディングが失敗しました'
context = {
'error_message': error_message,
}
return( context)
location_name = '八王子駅'
print(display_map(location_name))
上記コードを走らせると、こんな感じで出力されました。
{'results': [{'address_components': [{'long_name': 'Hachiōji Station', 'short_name': 'Hachiōji Station', 'types': ['establishment', 'point_of_interest', 'train_station', 'transit_station']}, {'long_name': '1', 'short_name': '1', 'types': ['political', 'sublocality', 'sublocality_level_4']}, {'long_name': '1丁目', 'short_name': '1丁目', 'types': ['political', 'sublocality', 'sublocality_level_3']}, {'long_name': 'Asahichō', 'short_name': 'Asahichō', 'types': ['political', 'sublocality', 'sublocality_level_2']}, {'long_name': 'Hachioji', 'short_name': 'Hachioji', 'types': ['locality', 'political']}, {'long_name': 'Tokyo', 'short_name': 'Tokyo', 'types': ['administrative_area_level_1', 'political']}, {'long_name': 'Japan', 'short_name': 'JP', 'types': ['country', 'political']}, {'long_name': '192-0083', 'short_name': '192-0083', 'types': ['postal_code']}], 'formatted_address': 'Hachiōji Station, 1丁目-1 Asahichō, Hachioji, Tokyo 192-0083, Japan', 'geometry': {'location': {'lat': 35.6556157, 'lng': 139.3388529}, 'location_type': 'ROOFTOP', 'viewport': {'northeast': {'lat': 35.6565716302915, 'lng': 139.3401072302915}, 'southwest': {'lat': 35.6538736697085, 'lng': 139.3374092697085}}}, 'partial_match': True, 'place_id': 'ChIJm3bo4tsdGWARdW7IcuYMzfE', 'plus_code': {'compound_code': 'M84Q+6G Hachioji, Tokyo, Japan', 'global_code': '8Q7XM84Q+6G'}, 'types': ['establishment', 'point_of_interest', 'train_station', 'transit_station']}], 'status': 'OK'}
{'latitude': 35.6556157, 'longitude': 139.3388529}
ようやくグーグル・マップのAPIが使えるようになりました。
原因と正しい設定(2026年9月追記)
記事を書いた当時は「制限をかける」「しばらく待つ」で動くようになりましたが、あらためて整理すると、原因と対処は次のとおりです。
なぜこのエラーが出るのか
Google Cloud のAPIキーには、2種類の制限があります。
- アプリケーションの制限:どこから呼ばれたら許可するか(HTTPリファラー/IPアドレス/Androidアプリ/iOSアプリ/なし)
- APIの制限:どのAPIに使ってよいか(Maps JavaScript API、Geocoding API など)
このうち「HTTPリファラー」制限は、ブラウザから呼ぶAPI(Maps JavaScript API など)専用です。この記事のPythonコードのように、サーバーから Geocoding API・Places API・Directions API などを呼ぶと、リクエストにリファラーが付かないため、今回のエラーで拒否されます。
正しい設定:キーを「ブラウザ用」と「サーバー用」に分ける
- ブラウザ用キー(地図を表示するだけ):アプリケーションの制限=「HTTPリファラー」、APIの制限=「Maps JavaScript API」
- サーバー用キー(Python・Django などから呼ぶ):アプリケーションの制限=「IPアドレス」(サーバーの送信元IP)、APIの制限=「Geocoding API」など実際に使うものだけ
1つのキーを両方に使い回そうとすると、どちらかで必ずエラーになります。
サーバーのIPアドレスが固定できない場合
PaaSや無料プランのサーバーでは、送信元IPが変わることがあります。その場合は、サーバー用キーのアプリケーションの制限を「なし」にします。代わりにAPIの制限を必ず絞り、Google Cloud コンソールの「割り当て」で1日の上限を低めに設定しておくと、キーが漏れたときの被害を抑えられます。このキーはブラウザ側のコード(JavaScript)には絶対に書かないでください。
似ているけれど別のエラー
- RefererNotAllowedMapError:ブラウザ用キーの「許可するリファラー」に、そのページのURLが入っていません。
https://example.com/*のようにワイルドカード付きで追加します。開発中はhttp://localhost:8000/*も追加が必要です。 - This API project is not authorized to use this API.:そのAPIがプロジェクトで有効になっていません。「APIとサービス」→「ライブラリ」で Geocoding API などを有効にします。
- REQUEST_DENIED(課金関連のメッセージ付き):プロジェクトに請求先アカウントが紐づいていません。
なお、キーの制限を変更してから反映されるまで、公式には「最大5分程度」かかるとされています。5分以上待っても直らない場合は、待つよりも上の設定を見直してください。
この仕組み、自社にも入れたい方へ
Posii株式会社は、生成AI・社内RAG・Djangoを使ったシステムを、設計から運用まで自社で作っている開発会社です。「うちの場合はどう作るか」「費用はどのくらいか」だけのご相談も承ります。
開発のご相談・お見積もり