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.

Device landscape

How is DeviceAtlas used

DeviceAtlas for web

DeviceAtlas for
Web

Direct visitors to the right experience or adapt content on the fly to optimize UX, web performace and revenue.

Learn more
DeviceAtlas for Apps

DeviceAtlas for
Apps

DeviceAtlas can provide deep device intelligence for native app traffic giving a consistent view across app and web environments.

Learn more
DeviceAtlas for Mobile Operators

DeviceAtlas for
Mobile Operators

Get detailed device data indexed by TAC to power marketing campaigns, infrastructure decisions and rich device analytics and reporting.

Learn more
Trusted device detection partner

Trusted 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 more

Device 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 S7 Edge

Samsung Galaxy S7 Edge

Samsung Galaxy Tab A

Samsung Galaxy Tab A

Nokia Lumia 950

Lumia 950

iPhone SE

iPhone SE

Blackberry Priv

Blackberry Priv

Device Vendor Samsung
Device Model SM-G935U
Year Released 2016
Screen Width 1440
Screen Height 2560
Display PPI 534
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-T585
Year Released 2016
Screen Width 1920
Screen Height 1200
Display PPI 224
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 Microsoft
Device Model RM-1105
Year Released 2015
Screen Width 1440
Screen Height 2560
Display PPI 565
Touch Screen
Is Tablet
OS Windows Phone
Browser Name Internet Explorer Mobile
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 SE
Year Released 2016
Screen Width 640
Screen Height 1136
Display PPI 326
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 BlackBerry
Device Model STV100
Year Released 2015
Screen Width 1440
Screen Height 2560
Display PPI 540
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

Carrier Identification

Identify the presence of a carrier or WiFi connection and get data on who the carrier is. Read more

Multiple Deployment Options

Multiple deployment options

A range of deployment options available at server, application and infrastructure layers. Read more

Bot detection

Bot detection

Understand bot traffic, reduce infrastructure costs and handle this traffic appropriately. Read more

Dynamic data

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 more
Performance

How DeviceAtlas works

DeviceAtlas can be deployed locally on your servers, or as a service accessed over the web.

Web
Apps
Operators
Web

Ensure that web traffic can be understood and handled in real-time.

Apps

Ensure that app traffic can be understood in programmatic environments such as analytics or advertising.

Operators

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

Request trial

Still have questions? Contact us