DeviceAtlas overview
Analyze web traffic, segment or adapt content for mobile audiences, or target specific mobile devices. DeviceAtlas is the world’s leading device detection solution providing data on all mobile and connected devices including smartphones, tablets, laptops, and wearable devices.
DeviceAtlas helps you stay on top of a fast changing device landscape by providing a detailed and actionable view of how users access content and networks on a wide range of devices.
How is DeviceAtlas used
DeviceAtlas for
Web
Direct visitors to the right experience or adapt content on the fly to optimize UX, web performace and revenue.
Learn moreDeviceAtlas for
Apps
DeviceAtlas can provide deep device intelligence for native app traffic giving a consistent view across app and web environments.
Learn moreDeviceAtlas for
Mobile Operators
Get detailed device data indexed by TAC to power marketing campaigns, infrastructure decisions and rich device analytics and reporting.
Learn moreTrusted device detection partner
DeviceAtlas has led the way in device detection and intelligence since 2008. Leading companies across multiple industry verticals build their business on DeviceAtlas. Our robust, high performance APIs are deployed in demanding environments, providing a competitive advantage to organizations who demand the very best solution to differentiate their businesses.
Read moreDevice data
DeviceAtlas provides the most accurate and comprehensive device data on the market. It is sourced from multiple industry-leading partnerships ensuring the highest device detection rates. Our data is fully transparent so you can see the provenance of every property for every device.
You can submit data, or maintain your own custom data set. More
Samsung Galaxy S9
Samsung Galaxy Tab S3
Huawei Honor 10
iPhone X
Pixel 2
Device Vendor | Samsung |
---|---|
Device Model | SM-G960U |
Year Released | 2018 |
Screen Width | 1440 |
Screen Height | 2960 |
Display PPI | 568 |
Touch Screen | |
Is Tablet |
OS | Android |
---|---|
Browser Name | Android Browser |
Cookie | |
URI Scheme Tel | |
Flash Capable | |
Image PNG | |
MP3 | |
AAC |
HTML Canvas | |
---|---|
HTML Video | |
CSS Animations | |
CSS Transitions | |
JS Support Events | |
JS Device Orientation | |
JS Query Selector | |
JS Local Storage |
Device Vendor | Samsung |
---|---|
Device Model | SM-T827R4 |
Year Released | 2017 |
Screen Width | 1536 |
Screen Height | 2048 |
Display PPI | 264 |
Touch Screen | |
Is Tablet |
OS | Android |
---|---|
Browser Name | Android Browser |
Cookie | |
URI Scheme Tel | |
Flash Capable | |
Image PNG | |
MP3 | |
AAC |
HTML Canvas | |
---|---|
HTML Video | |
CSS Animations | |
CSS Transitions | |
JS Support Events | |
JS Device Orientation | |
JS Query Selector | |
JS Local Storage |
Device Vendor | Huawei |
---|---|
Device Model | COL-L29 |
Year Released | 2018 |
Screen Width | 1080 |
Screen Height | 2280 |
Display PPI | 435 |
Touch Screen | |
Is Tablet |
OS | Android |
---|---|
Browser Name | Android Browser |
Cookie | |
URI Scheme Tel | |
Flash Capable | |
Image PNG | |
MP3 | |
AAC |
HTML Canvas | |
---|---|
HTML Video | |
CSS Animations | |
CSS Transitions | |
JS Support Events | |
JS Device Orientation | |
JS Query Selector | |
JS Local Storage |
Device Vendor | Apple |
---|---|
Device Model | iPhone X A1865 |
Year Released | 2017 |
Screen Width | 1125 |
Screen Height | 2436 |
Display PPI | 463 |
Touch Screen | |
Is Tablet |
OS | iOS |
---|---|
Browser Name | Safari |
Cookie | |
URI Scheme Tel | |
Flash Capable | |
Image PNG | |
MP3 | |
AAC |
HTML Canvas | |
---|---|
HTML Video | |
CSS Animations | |
CSS Transitions | |
JS Support Events | |
JS Device Orientation | |
JS Query Selector | |
JS Local Storage |
Device Vendor | |
---|---|
Device Model | G011A |
Year Released | 2017 |
Screen Width | 1080 |
Screen Height | 1920 |
Display PPI | 441 |
Touch Screen | |
Is Tablet |
OS | Android |
---|---|
Browser Name | Android Browser |
Cookie | |
URI Scheme Tel | |
Flash Capable | |
Image PNG | |
MP3 | |
AAC |
HTML Canvas | |
---|---|
HTML Video | |
CSS Animations | |
CSS Transitions | |
JS Support Events | |
JS Device Orientation | |
JS Query Selector | |
JS Local Storage |
Get more with DeviceAtlas
DeviceAtlas patented technology is the only solution that provides:
Carrier Identification
Identify the presence of a carrier or WiFi connection and get data on who the carrier is. Read more
Multiple deployment options
A range of deployment options available at server, application and infrastructure layers. Read more
Bot detection
Understand bot traffic, reduce infrastructure costs and handle this traffic appropriately. Read more
Dynamic data
Complement server-side data with real-time dynamic data on a device’s context including user specific settings, device and browser state, or connection speed. Read more
APIs for every environment
DeviceAtlas supports all major environments with well-documented APIs including PHP, Java, Ruby, Python, .NET and C++. Easy to use, with lots of sample code, you can get up and running quickly. Also available in module form for Apache, IIS, NGINX and Varnish making your entire stack device aware. Node.js API now available.
Cloud API
Enterprise API
Java
.NET
PHP
Python
Ruby
Node.js
C++
Go
// Get the Cloud API instance and set the licence key
Client client = Client.getInstance();
client.setLicenceKey("your_licence_key");
// Pass the HttpServletRequest object and get back the device properties
Map results = client.getDeviceData(request);
Map properties = (Map) results.get(Client.KEY_PROPERTIES);
// Detect if mobile device
Boolean isMobileDevice = (Boolean)
properties.get("mobileDevice");
if (isMobileDevice !=
null &&
isMobileDevice.booleanValue()) {
// Example 1: Get the screen width for the images optimization
Integer displayWidth = (Integer) properties.get("displayWidth");
// Example 2: Touch screen optimization
Boolean useBiggerIcons = (Boolean) properties.get("touchScreen");
// Example 3: Send Geo Location JS to client?
Boolean supportsGeoLocation = (Boolean) properties.get("js.geoLocation");
}
// Get the Cloud API instance and set the licence key
Client client = Client.GetInstance();
client.SetLicenceKey("your_licence_key");
// Pass the HttpServletRequest object and get back the device properties
Hashtable results = client.GetDeviceData(Request);
Hashtable properties = (Hashtable) results[Client.KEY_PROPERTIES];
// Detect if mobile device
bool isMobileDevice = (bool) properties["mobileDevice"];
if (isMobileDevice.HasValue && isMobileDevice.Value) {
// Example 1: Get the screen width for the images optimization
int displayWidth = (int) properties["displayWidth"];
// Example 2: Touch screen optimization
bool useBiggerIcons = (bool) properties["touchScreen"];
// Example 3: Send Geo Location JS to client?
bool suportsGeoLocation = (bool) properties["js.geoLocation"];
}
// Include DeviceAtlasCloud library
include './DeviceAtlasCloud/Api/Client.php';
// Call static method and get back the device properties
$results = DeviceAtlasCloudClient::getDeviceData();
$properties = $results[DeviceAtlasCloudClient::KEY_PROPERTIES];
// Detect if mobile device
if (isset($properties['mobileDevice']) &&
$properties['mobileDevice']) {
// Example 1: Get the screen width for the images optimization
$display_width = $properties['displayWidth'];
// Example 2: Touch screen optimization
$use_bigger_icons = $properties['touchScreen'];
// Example 3: Send Geo Location JS to client?
$suports_geo_location = $properties['js.geoLocation'];
}
# Import DeviceAtlasCloud library
# (locally deployed at DeviceAtlasCloud/Api/Client.py)
sys.path.append(os.path.join("DeviceAtlasCloud"))
import Api.Client
# Initialize the client and get back the device properties
client = DeviceAtlasCloud.Client.Client()
results = client.getDeviceData()
properties = results[da.PROPERTIES]
# Detect if mobile device
if 'mobileDevice' in
properties and properties['mobileDevice']:
# Example 1: Get the screen width for the images optimization
displayWidth = properties['displayWidth']
# Example 2: Touch screen optimization
useBiggerIcons = properties['touchScreen']
# Example 3: Send Geo Location JS to client?
supportsGeoLocation = properties['js.geoLocation']
# Import DeviceAtlas Cloud Client gem
require 'deviceatlas_cloud_client'
class ExampleController < ActionController::Base
# Include our controller helper
include DeviceAtlasCloudClient::ControllerHelper
def index
# Get Cloud instance, set your licence key and get the device properties
client = get_deviceatlas_cloud_client_instance
client.settings.licence_key = 'YOUR_LICENCE_KEY'
device_data = client.get_device_data
# Sample usage - Detect mobile device
if device_data[:properties].has_key?('mobileDevice')
# example 1: Get the screen width for the images optimization
display_width = device_data[:properties]['displayWidth']
# example 2: Touch screen optimization
use_bigger_icons = device_data[:properties]['touchScreen']
# example 3: Send Geo Location JS to client?
supports_geo_location = device_data[:properties]['js.geoLocation']
end
end
// Create a DeviceApiWeb instance and load the data file
DeviceApiWeb deviceApi = new DeviceApiWeb();
deviceApi.loadDataFromFile("/path/to/datafile.json");
// Pass the HttpServletRequest object and detect the device properties
Properties properties = deviceApi.getProperties(request);
// Detect if mobile device
if (properties.contains("mobileDevice",
true)) {
// Example 1: Get the screen width for the image optimization
int displayWidth = properties.get("displayWidth").asInteger();
// Example 2: Touch screen optimization
boolean useBiggerIcons = properties.get("touchScreen").asBoolean();
// Example 3: Get Operating System
String osName = properties.get("osName").toString();
}
// Create a DeviceApiWeb instance and load the data file
DeviceApiWeb deviceApi = new DeviceApiWeb();
deviceApi.LoadDataFromFile("/path/to/datafile.json");
// Detect the device properties for current request
Properties properties = deviceApi.GetProperties();
// Detect if mobile device
if (properties.Contains("mobileDevice", true)) {
// Example 1: Get the screen width for the image optimization
int displayWidth = properties["displayWidth"].AsInteger();
// Example 2: Touch screen optimization
bool useBiggerIcons = properties["touchScreen"].AsBoolean();
// Example 3: Get Operating System
String osName = properties["osName"].ToString();
}
// Create a DeviceApiWeb instance and load the data file
$deviceApi = new DeviceApiWeb();
$deviceApi->loadDataFromFile("/path/to/datafile.json");
// Detect properties for current request
$properties = $deviceApi->getProperties();
// Detect if mobile device
if ($properties->contains("mobileDevice", true)) {
// Example 1: Get the screen width for the image optimization
$displayWidth = $properties->get("displayWidth")->asInteger();
// Example 2: Touch screen optimization
$useBiggerIcons = $properties->get("touchScreen")->asBoolean();
// Example 3: Get Operating System
$osName = $properties->get("osName")->toString();
}
# Create a DeviceApiWeb instance and load the data file
device_api = DeviceApi()
device_api.load_data_from_file("/path/to/datafile.json")
# Pass the request object from BaseHTTPRequestHandler and detect the device
# properties
properties = device_api.get_properties(self.headers)
# Detect if mobile device
if properties.contains("mobileDevice",
True):
# Example 1: Get the screen width for the image optimization
display_width = int(properties.get("displayWidth"))
# Example 2: Touch screen optimization
use_bigger_icons = bool(properties.get("touchScreen"))
# Example 3: Get Operating System
os_name = str(properties.get("osName"))
# Include the API controller helper
include Mobi::Mtld::Da::Device::ControllerHelper
# Create a DeviceApiWeb instance and load the data file
device_api = get_deviceatlas_device_api_web_instance
device_api.load_data_from_file "/path/to/datafile.json"
# Get the device properties
properties = device_api.get_properties
# Detect if mobile device
if properties.contains?("mobileDevice",
true)
# Example 1: Get the screen width for the image optimization
display_width = properties.get("displayWidth").to_i
# Example 2: Touch screen optimization
use_bigger_icons = properties.get("touchScreen").to_b
# Example 3: Get Operating System
os_name = properties.get("osName").to_s
end
// Create a DeviceApiWeb instance and load the data file
var deviceApi = new
DeviceApiWeb();
deviceApi.loadDataFromFile('path/to/datafile.json');
// Detect properties for nodejs request object
var properties = deviceApi.getPropertiesFromRequest(request);
// Detect if mobile device
if (properties.contains('mobileDevice',
true)){
// Example 1: Get the screen width for the image optimization
var displayWidth = properties.get('displayWidth').getValue();
// Example 2: Touch screen optimization
var useBiggerIcons = properties.contains('touchScreen', true);
// Example 3: Get Operating System with fallback
var osName = properties.containsKey('osName')?properties.get('osName').getValue():'Unknown';
}
// Create a DeviceAtlas instance and load the data file
Da::DeviceAtlas
deviceApi;
deviceApi.loadDataFromFile("/path/to/datafile.json");
// Pass the Da::HttpHeaders map of headers and detect the device properties
Da::DeliveryContext
properties(deviceApi, headers);
// Detect if mobile device
if (properties.contains("mobileDevice",
true)) {
// Example 1 : Get the screen width for the images optimization
int displayWidth = (long)*properties["displayWidth"];
// Example 2 : Touch screen optimization
bool useBiggerIcons = (bool)*properties["touchScreen"];
// Example 3 : Get operating System
std::string osName = (std::string)*properties["osName"];
}
// Create a DeviceApi instance and load the data file
var da *deviceatlas.DaGo
da = deviceatlas.New()
_, err := da.LoadDataFromFile("/path/to/DeviceAtlas.json")
// handle err in production
properties, err := da.DetectHttpRequest(req)
// Detect if mobile device
if _, keyin :=
properties["mobileDevice"]; keyin {
// Example 1: Get the screen width for the image optimization
displayWidth := properties["displayWidth"]
// Example 2: Touch screen optimization
use_bigger_icons := properties["touchScreen"]
// Example 3: Get Operating System
os_name := properties["osName"]
}
da.Free() // free resources if da object is no longer needed.
Performance
DeviceAtlas is a best-in-class, high performance, device detection solution. We are fully transparent, and our performance benchmarks are fully documented using real world testing conditions.
DeviceAtlas APIs use a highly optimized JSON file format that offers lightning fast lookups with minimal server footprint. Optimized for size and speed of searching, DeviceAtlas does not need ongoing maintenance and offers the best device detection at a low total cost of ownership.
Find out moreHow DeviceAtlas works
DeviceAtlas can be deployed locally on your servers, or as a service accessed over the web.
Ensure that web traffic can be understood and handled in real-time.
Ensure that app traffic can be understood in programmatic environments such as analytics or advertising.
Get an in-depth understanding of all network traffic based on TAC.
Start understanding your device traffic today
Get your free trial set up today
Still have questions? Contact us