Polymer Database Search (Polymer-Data-Bank)
API Information
- Endpoint:
POST https://open.bohrium.com/openapi/v1/database/common_data/list
- Authentication: Header
accessKey: <YOUR_ACCESS_KEY>
- tableAk:
123zl00 (Polymer-Data-Bank, 280k+ records)
- Data Source: Bohrium Materials Database
Request Format
curl -s -X POST 'https://open.bohrium.com/openapi/v1/database/common_data/list' \
-H 'Content-Type: application/json' \
-H 'accessKey: <YOUR_ACCESS_KEY>' \
-d '<JSON body>'
Basic Request Body
{
"tableAk": "123zl00",
"page": 1,
"pageSize": 50,
"filters": { ... },
"selectedFields": ["field1", "field2"],
"orderBy": [{"field": "fieldName", "order": "asc"}]
}
Parameters
| Parameter |
Type |
Required |
Description |
tableAk |
string |
Yes |
Fixed "123zl00" |
page |
int |
Yes |
Page number, starting from 1 |
pageSize |
int |
Yes |
Items per page, max 5000 |
filters |
object |
No |
Filter conditions (Filter structure) |
selectedFields |
[]string |
No |
Only return specified fields |
orderBy |
[]object |
No |
Sort by {"field": "xxx", "order": "asc/desc"} |
Filter Structure
{
"type": 2,
"groupOperator": "and",
"sub": [
{
"type": 1,
"field": "field_name (dataIndex)",
"operator": "eq",
"value": "value"
}
]
}
type: 1 = Simple condition, 2 = Compound condition (with sub)
groupOperator: "and" | "or"
operator: eq / neq / like / gt / gte / lt / lte / in / nin / between
Important limitation: All property fields are string type (values like "71.3 °C", "[255 °C,288 °C]"). Operators like gt/lt perform lexicographic comparison, not numeric. Numeric range filtering must be done client-side after parsing.
Field Name Mapping
Basic Information
| Common Name |
dataIndex |
Example Value |
| DOI |
doi |
"10.1021/acs.macromol.9b02359" |
| Polymer name |
polymer_name |
"PI", "PU" |
| Polymer type |
polymer_type |
"Polyimide" |
| Monomer composition/structure |
components |
"6FDA:O=C1OC...;ODA:Nc1ccc..." |
| Feed ratio |
feed_ratio_text |
"DABz/m-BAPS = 1/1" |
| Ratio type |
ratio_type |
"mole", "weight" |
Thermal Properties
| Common Name |
dataIndex |
Related Fields |
| Tg / Glass transition temperature |
GlassTransitionTemperature(Tg) |
test_method_GlassTransitionTemperature(Tg), heating_rate_GlassTransitionTemperature(Tg), atmosphere_GlassTransitionTemperature(Tg) |
| Td / Decomposition temperature |
DecompositionTemperature(Td) |
decomposition_criterion_DecompositionTemperature(Td), atmosphere_DecompositionTemperature(Td) |
| Tm / Melting temperature |
MeltingTemperature(Tm) |
test_method_MeltingTemperature(Tm) |
| Tc / Crystallization temperature |
CrystallizationTemperature(Tc) |
— |
| CTE / Coefficient of thermal expansion |
CoefficientofThermalExpansion(CTE) |
— |
| Thermal conductivity |
ThermalConductivity |
— |
Optical Properties
| Common Name |
dataIndex |
Related Fields |
| Transmittance |
Transmittance |
wavelength_Transmittance, thickness_Transmittance |
| Refractive index |
RefractiveIndex(n) |
wavelength_RefractiveIndex(n) |
| Yellow index |
YellowIndex(YI)/WhitenessIndex(WI) |
— |
| Haze |
Haze |
— |
| Birefringence |
Birefringence(Δn) |
— |
| Cut-off wavelength |
Cut-offWavelength(λ_cut) |
— |
| Abbe number |
AbbeNumber(νd) |
— |
Mechanical Properties
| Common Name |
dataIndex |
| Tensile strength |
TensileStrength |
| Tensile modulus / Young's modulus |
TensileModulus |
| Elongation at break |
ElongationatBreak |
| Flexural strength |
FlexuralStrength |
| Flexural modulus |
FlexuralModulus |
| Impact strength |
ImpactStrength |
| Shear strength |
ShearStrength |
| Shore hardness |
ShoreHardness |
Electrical Properties
| Common Name |
dataIndex |
| Dielectric constant Dk |
DielectricConstant(Dk) |
| Dielectric loss Df |
DielectricLoss(Df/tanδ) |
| Breakdown strength |
BreakdownStrength |
| Volume resistivity |
VolumeResistivity |
| Proton conductivity |
ProtonConductivity |
Molecular Weight
| Common Name |
dataIndex |
| Number-average molecular weight Mn |
mn_value |
| PDI / Polydispersity index |
pdi_value |
Query Strategies
Exact Query (Q1 type)
User asks "properties of a specific DOI/polymer": query directly with selectedFields limiting returned fields.
{
"tableAk": "123zl00",
"page": 1,
"pageSize": 50,
"filters": {
"type": 2, "groupOperator": "and",
"sub": [{"type": 1, "field": "doi", "operator": "eq", "value": "10.1021/..."}]
},
"selectedFields": ["polymer_name", "polymer_type", "GlassTransitionTemperature(Tg)", "DecompositionTemperature(Td)"]
}
Numeric Range Filtering (Q2 type)
User asks "polymers with Tg > 350°C":
- Cannot directly use
gt operator (field is string, lexicographic comparison is inaccurate)
- Correct approach: Use
like operator to exclude empty values ("value": ""), set pageSize: 5000, fetch data and parse numerically on client side
import re
def parse_value_celsius(val_str):
"""Parse temperature string with units, convert to °C"""
if not val_str:
return None
nums = re.findall(r'[-+]?\d+\.?\d*', val_str)
if not nums:
return None
values = [float(n) for n in nums]
max_val = max(values)
if 'K' in val_str and '°C' not in val_str:
return max_val - 273.15
elif '°F' in val_str:
return (max_val - 32) * 5 / 9
return max_val
- After filtering, perform statistical analysis (type distribution, frequent monomers, etc.)
Analysis & Recommendation (Q3 type)
User asks "suggestions for synthesizing a polymer with XX properties":
- Use
like "" to fetch records with that property data (max 5000/page, may need pagination)
- Parse values on client side, filter records meeting criteria
- Analyze
polymer_type distribution, frequent monomers in components
- Provide structural design suggestions based on data patterns
Data Format Notes
components field format
monomer_name:SMILES;monomer_name:SMILES;...
Example: 6FDA:O=C1OC(=O)c2cc(...)ccc21;ODA:Nc1ccc(Oc2ccc(N)cc2)cc1
Property value format (all strings)
- Single value:
"71.3 °C"
- Multiple values:
"[255 °C,288 °C]"
- Descriptive:
"over 90 %", "greater than 350 °C"
- With error:
"90.8% ± 0.6%"
System fields (ignore)
_id: MongoDB ObjectID
a1b2c3d4e5_is_locked: Lock flag
a1b2c3d4e5_owner_id: Data owner
a1b2c3d4e5_source: Data source
a1b2c3d4e5_status: Review status
authors: Contributor info
createTime / updateTime: Timestamps
Important Notes
- Inconsistent units: Same field may mix °C, K, °F — unit conversion is required
- String values: All property fields are strings, numeric comparison must be done client-side
- Multi-value fields: A record may have multiple values for a property (array format like
"[val1,val2]")
- pageSize limit: Max 5000. For large datasets, use pagination (total count in
data.count)
- Special characters in field names: e.g.
GlassTransitionTemperature(Tg) contains parentheses, use directly as JSON key
- like empty string:
"operator": "like", "value": "" matches all non-empty records
- When presenting results to user, filter out system fields (
a1b2c3d4e5_*, authors), show only meaningful data